Files
BeWoPlaner/ReportImp/LebenshilfeStade/Service/CustomServiceRecordStatisticFactory.cs

70 lines
3.0 KiB
C#

using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.Plugins;
using BS.Shared.DataContracts;
using BS.Shared.Extensions;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LebenshilfeStade.Service
{
public class CustomServiceRecordStatisticFactory : ServiceRecordStatisticFactory
{
public override SupportConceptStatisticsDC CreateSupportConceptStatisticsImpl(long costBearer2SupportConceptOid, DateTime statisticsDate, long? ignoreServiceRecordOid)
{
var stats = base.CreateSupportConceptStatisticsImpl(costBearer2SupportConceptOid, statisticsDate, ignoreServiceRecordOid);
var cb = MapperFactory.SupportConceptCostBearerRelDC_CostBearer2SupportConcept.MapToNewDC(DAOFactory.GenericDAO.GetByID<CostBearer2SupportConcept>(costBearer2SupportConceptOid));
if (cb.CostBearer.Function.IsNullOrEmpty() || !cb.CostBearer.Function.IsNullOrEmpty() && !cb.CostBearer.Function.ToLower().Contains("fls 50"))
return stats;
decimal factor = 1.2m;
stats.MinutesApprovedTotal = 0;
foreach (var item in stats.PeriodStatistics)
{
// Bewilligt pro Woche/Gesamt
if (item.SupportConceptApprovalPeriod != null && item.SupportConceptApprovalPeriod.ApprovedBEInterval.HasValue &&
item.SupportConceptApprovalPeriod.ApprovedBEInterval.Value == BS.Shared.SupportConceptApprovalInterval.Monthly)
{
item.MinutesApprovedTotal /= factor;
}
stats.MinutesApprovedTotal += item.MinutesApprovedTotal;
//DateTime dtPeriod = statisticsDate.Date;
//if (item.SupportConceptApprovalPeriod.StartDate.HasValue && item.SupportConceptApprovalPeriod.StartDate > dtPeriod)
//{
// dtPeriod = item.SupportConceptApprovalPeriod.StartDate.Value;
//}
//TimeSpan tsPeriod = item.SupportConceptApprovalPeriod.EndDate.Value.Subtract(dtPeriod);
//int daysPeriod = tsPeriod.Days + 1;
//if (daysPeriod < 0)
// daysPeriod = 0;
//if (daysPeriod != 0)
//{
// item.MinutesFreePerWeek = (item.MinutesApprovedTotal - item.MinutesProvidedTotalRounded) / (daysPeriod / 7m);
//}
//else
//{
// item.MinutesFreePerWeek = item.MinutesApprovedTotal - item.MinutesProvidedTotalRounded;
//}
}
//decimal freeTotal = stats.MinutesApprovedTotal - stats.MinutesProvidedTotalRounded;
//if (stats.MinutesFreePerWeekAverage > freeTotal)
// stats.MinutesFreePerWeekAverage = freeTotal;
//if (stats.MinutesFreePerWeekAverage < 0)
// stats.MinutesFreePerWeekAverage = 0;
return stats;
}
}
}