Files
BeWoPlaner/ReportImp/UebergangshilfeUnnaEV/HilfeplanKontingentRO.cs
Christian 4ddee24914 cb
2022-11-09 09:44:24 +01:00

136 lines
3.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.Plugins;
using BeWo.Service.ServiceImplementations;
using BS.Shared;
using BS.Shared.DataContracts;
namespace UebergangshilfeUnnaEV
{
public class HilfeplanKontingentRO
{
private List<MonthRow> rows = new List<MonthRow>();
public List<MonthRow> Rows
{
get
{
return this.rows;
}
set
{
this.rows = value;
}
}
public SupportConceptOverviewDC SupportConceptOverviewDC { get; private set; }
public static HilfeplanKontingentRO Create(IList<long> oidList)
{
HilfeplanKontingentRO ro = new HilfeplanKontingentRO();
var service = new SupportConceptAnalysisCreator();
List<SupportConceptOverviewDC> soList = service.GetSupportConceptAnalysis2(oidList, null, null, null, null, null, null, true);
Dictionary<String, MonthRow> date2Row = new Dictionary<String, MonthRow>();
foreach (SupportConceptOverviewDC dc in soList)
{
ro.SupportConceptOverviewDC = dc;
var start = dc.ApprovedStartDate ?? new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
var end = dc.ApprovedEndDate ?? new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).AddMonths(1).AddDays(-1);
while (start < end)
{
MonthRow row = new MonthRow();
row.Monat = start;
row.Tage = DateTime.DaysInMonth(start.Year, start.Month);
var woche = dc.BEApprovedPerWeek;
var tag = woche / 7;
row.FlsBudget = tag * row.Tage;
date2Row.Add(String.Format("{0:MMyyyy}", start), row);
ro.Rows.Add(row);
start = start.AddMonths(1);
}
foreach (var sr in dc.ServiceRecords)
{
String monthStr = String.Format("{0:MMyyyy}", sr.Start);
if (date2Row.ContainsKey(monthStr))
{
var row = date2Row[monthStr];
var duration = sr.RoundedDuration;
//Gruppen?
row.FlsIst += duration;
}
}
}
decimal summeBudget = 0;
decimal summeIst = 0;
foreach (var row in ro.Rows)
{
row.FlsIst /= 60;
summeBudget += row.FlsBudget;
summeIst += row.FlsIst;
row.SummeFlsBudget = summeBudget;
row.SummeFlsIst = summeIst;
row.DifferenzMonatSollIst = row.FlsIst - row.FlsBudget;
row.DiffFls = row.SummeFlsIst - row.SummeFlsBudget;
}
return ro;
}
public class MonthRow
{
public DateTime Monat { get; set; }
public int Tage { get; set; }
public decimal FlsBudget { get; set; }
public decimal SummeFlsBudget { get; set; }
public decimal DifferenzMonatSollIst { get; set; }
public decimal FlsIst { get; set; }
public decimal SummeFlsIst { get; set; }
public decimal DiffFls { get; set; }
}
}
}