Files
BeWoPlaner/ReportImp/AlzeyTeilhabe/Service/CustomSaveInterceptor.cs

88 lines
3.7 KiB
C#

using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.Plugins;
using BS.Shared.Core;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AlzeyTeilhabe.Service
{
public class CustomSaveInterceptor : SaveInterceptor
{
public override void BeforeSaveServiceRecord(ServiceRecord sr)
{
if (sr.ServiceDescription.ServiceCategory.Name.ToLower().Contains("soziotherapie"))
{
if (sr.ServiceDescription.Name.ToLower().Contains("fahrtkosten") && sr.Customer.DistanceInMeter != null)
sr.DistanceInMeter = sr.Customer.DistanceInMeter * 2;
else
sr.DistanceInMeter = null;
}
else
sr.DistanceInMeter = null;
// Wenn etwas dokumentiert wird, wo in der Doku was bestimmtes NICHT drin steht, wird eine Wegezeit mitgespeichert, wenn es ein neuer SR ist (also bei oid null)
// Die bearbeiten aber oft nochmal ServiceRecords, dann soll nicht jedes Mal eine Wegepauschale gespeichert werden
if (sr.Oid == null)
{
if (sr.Start.HasValue && sr.SupportConcept != null && (sr.Notice == null || LeistungQualifiziertFuerWegzeit(sr.Notice.ToLower())))
ErstelleWegezeit(sr);
}
}
private bool LeistungQualifiziertFuerWegzeit(string dokumentation)
{
bool qualifiziert = false;
if (!dokumentation.Contains("telefonische kriesenintervention") &&
!dokumentation.Contains("telefonische krisenintervention") &&
!dokumentation.Contains("telefonischer kontakt"))
{
qualifiziert = true;
}
return qualifiziert;
}
private void ErstelleWegezeit(ServiceRecord serviceRecord)
{
ServiceRecord wegezeit = new ServiceRecord()
{
Betrag = null,
CostBearer2SupportConcept = serviceRecord.CostBearer2SupportConcept,
CostBearer2SupportConceptOid = serviceRecord.CostBearer2SupportConceptOid,
Customer = serviceRecord.SupportConcept.Customer,
CustomerOid = serviceRecord.SupportConcept.Customer.Oid,
DistanceInMeter = null,
Employee = serviceRecord.Employee,
EmployeeOid = serviceRecord.Oid,
Group = null,
GroupEmployeeCount = null,
GroupOid = null,
GroupPersonCount = null,
GroupRoundedDuration = null,
InsTs = DateTime.Now,
InsUser = "System",
IP = serviceRecord.IP,
IsActive = BS.Shared.ActivationTypeId.Active,
IsCreatedInMobileClient = false,
ServiceRecordType = BS.Shared.ServiceRecordTypeId.DefaultActivity,
SupportConcept = serviceRecord.SupportConcept,
RoundedDuration = 60,
Start = serviceRecord.Start.Value.Date.AddSeconds(1),
End = serviceRecord.Start.Value.Date.AddMinutes(60).AddSeconds(1),
DurationInStunden = BS.Shared.ZeiterfassungsDauer.Stunden,
Notice = "Wegepauschale"
};
wegezeit.ServiceDescription = DAOFactory.SearchDAO.FindServiceDescriptionForCategory(serviceRecord.ServiceDescription.ServiceCategory.Oid.Value).FirstOrDefault(sr => sr.Name.ToLower().Contains("wegepauschale (wp)"));
if (wegezeit.ServiceDescription != null)
DAOFactory.GenericDAO.Insert(wegezeit);
}
}
}