Files
BeWoPlaner/ReportImp/InternationalesFamilienzentrum/Statistics/CustomServiceRecordStatisticFactory.cs
Christian 5a1f9f0023 cb
2023-01-26 00:31:27 +01:00

103 lines
4.6 KiB
C#

using System;
using System.Collections.Generic;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.Plugins;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.Extensions;
using BS.Shared.Services;
namespace InternationalesFamilienzentrum.Statistics
{
public class CustomServiceRecordStatisticFactory : ServiceRecordStatisticFactory
{
public override ServiceRecordStatisticsInfoDC GetServiceRecordStatisticInfo(long costBearer2SupportConceptOid, DateTime statisticsDate)
{
var stats = CreateSupportConceptStatisticsImpl(costBearer2SupportConceptOid, statisticsDate);
var dc = new ServiceRecordStatisticsInfoDC();
dc.Header = new string[4];
dc.Header[0] = "Bewilligungszeitraum:";
dc.Header[1] = "Bewilligt diesen Monat/Gesamt:";
dc.Header[2] = "Geleistet diesen Monat/Gesamt:";
dc.Header[3] = "Frei diesen Monat/Gesamt:";
dc.ForegroundColor = new string[4];
dc.ForegroundColor[0] = "#FF2B508B";
dc.ForegroundColor[1] = "#FF2B508B";
dc.ForegroundColor[2] = "#FF2B508B";
dc.ForegroundColor[3] = "#FF2B508B";
dc.PeriodStatisticInfos = new List<ServiceRecordPeriodStatisticsInfoDC>();
if (stats != null)
{
if (stats.PeriodStatistics.Count > 1 && !TimeSpanIsEqual(stats))
dc.PeriodStatisticInfos.Add(CreateTotalStatistics(stats, statisticsDate));
foreach (var pdc in stats.PeriodStatistics)
{
dc.PeriodStatisticInfos.Add(CreateServiceRecordPeriodStatisticsInfo(stats, pdc, statisticsDate));
}
}
return dc;
}
public ServiceRecordPeriodStatisticsInfoDC CreateTotalStatistics(SupportConceptStatisticsDC stats, DateTime statisticsDate)
{
var dc = CreateDefaultServiceRecordPeriodStatisticsInfo(4);
dc.LeftValues[0] = "Gesamt";
dc.LeftValues[1] = String.Format("{0:0.00}", stats.MinutesApprovedPerMonth / 60);
dc.RightValues[1] = String.Format("{0:0.00}", stats.MinutesApprovedTotal / 60);
dc.LeftValues[2] = String.Format("{0:0.00}", stats.MinutesProvidedThisMonth / 60);
dc.RightValues[2] = String.Format("{0:0.00}", stats.MinutesProvidedTotalRounded / 60);
dc.LeftValues[3] = String.Format("{0:0.00}", (stats.MinutesApprovedPerMonth - stats.MinutesProvidedThisMonth) / 60);
dc.RightValues[3] = String.Format("{0:0.00}", (stats.MinutesApprovedTotal - stats.MinutesProvidedTotalRounded) / 60);
return dc;
}
public ServiceRecordPeriodStatisticsInfoDC CreateServiceRecordPeriodStatisticsInfo(SupportConceptStatisticsDC stats, SupportConceptPeriodStatisticsDC periodStats, DateTime statisticsDate)
{
var dc = CreateDefaultServiceRecordPeriodStatisticsInfo(4);
if (periodStats.SupportConceptApprovalPeriod != null)
{
if (periodStats.SupportConceptApprovalPeriod.ServiceCategory != null)
{
dc.LeftValues[0] = String.Format("{0}: {1:dd.MM.yy} - {2:dd.MM.yy}",
periodStats.SupportConceptApprovalPeriod.ServiceCategory.Name,
periodStats.SupportConceptApprovalPeriod.StartDate,
periodStats.SupportConceptApprovalPeriod.EndDate);
}
else
{
dc.LeftValues[0] = String.Format("{0:dd.MM.yy} - {1:dd.MM.yy}",
periodStats.SupportConceptApprovalPeriod.StartDate,
periodStats.SupportConceptApprovalPeriod.EndDate);
}
}
dc.LeftValues[1] = String.Format("{0:0.00}", periodStats.MinutesApprovedPerMonth / 60);
dc.RightValues[1] = String.Format("{0:0.00}", periodStats.MinutesApprovedTotal / 60);
dc.LeftValues[2] = String.Format("{0:0.00}", periodStats.MinutesProvidedThisMonth / 60);
dc.RightValues[2] = String.Format("{0:0.00}", periodStats.MinutesProvidedTotalRounded / 60);
dc.LeftValues[3] = String.Format("{0:0.00}", (periodStats.MinutesApprovedPerMonth - periodStats.MinutesProvidedThisMonth) / 60);
dc.RightValues[3] = String.Format("{0:0.00}", (periodStats.MinutesApprovedTotal - periodStats.MinutesProvidedTotalRounded) / 60);
return dc;
}
}
}