70 lines
3.0 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|