88 lines
3.7 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|