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

135 lines
9.3 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 LebenshilfeStadeMID.Service
{
public class CustomSaveInterceptor : SaveInterceptor
{
public override void BeforeSaveServiceRecord(ServiceRecord sr)
{
// Wenn "Schulbegleitender Dienst" dokumentiert wird muss EIN MAL PRO TAG eine Verfügungszeit pauschal eingetragen werden.
if (sr.Start.HasValue && sr.SupportConcept != null && (sr.ServiceDescription.Name.ToLower().Contains("qualifizierte schulassistenz (jas)") || sr.ServiceDescription.Name.ToLower().Contains("einfache schulassistenz (jas)")
|| sr.ServiceDescription.Name.ToLower().Contains("nachqualifizierte schulbegleitung (jas)") || sr.ServiceDescription.Name.ToLower().Contains("kind krank")))
{
// Alle Einträge des Tages holen, für den dokumentiert wird
var span = new DateTimeSpan() { StartDate = new DateTime(sr.Start.Value.Year, sr.Start.Value.Month, sr.Start.Value.Day), EndDate = sr.Start.Value.Date.AddDays(1) };
var eintraegeAmTag = DAOFactory.SearchDAO.FindCustomerServiceRecords(sr.SupportConcept.Customer.Oid.Value, span, null, BS.Shared.ServiceRecordTypeId.DefaultActivity, true);
// Wenn es noch keinen Eintrag für den Klienten gibt muss die halbe Stunden Verfügungszeit gespeichert werden
if (eintraegeAmTag != null && eintraegeAmTag.Count == 0)
{
ErstelleVerfuegungszeit(sr);
}
// Wenn es schon welche gibt prüfen, ob da Verfügungszeit bei ist
else if (eintraegeAmTag != null && eintraegeAmTag.Count > 0)
{
// Gibt es keinen, neuen erstellen
if (eintraegeAmTag.Any(e => e.ServiceDescription.Name.ToLower().Contains("verfügungszeit")))
{
// nix
}
else
ErstelleVerfuegungszeit(sr);
}
}
}
private void ErstelleVerfuegungszeit(ServiceRecord serviceRecord)
{
ServiceRecord verfuegungszeit = 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 = 30,
//ServiceDescription = DAOFactory.SearchDAO.FindServiceDescriptionForCategory(serviceRecord.ServiceDescription.ServiceCategory.Oid.Value).FirstOrDefault(sr => sr.Name == "Verfügungszeit"),
//Start = serviceRecord.Start.Value.AddMinutes((int)serviceRecord.RoundedDuration),
//End = serviceRecord.Start.Value.AddMinutes((int)serviceRecord.RoundedDuration + 30),
Start = serviceRecord.Start.Value.Date.AddSeconds(1),
End = serviceRecord.Start.Value.Date.AddMinutes(30).AddSeconds(1),
DurationInStunden = BS.Shared.ZeiterfassungsDauer.Minuten,
};
if (serviceRecord.ServiceDescription.Name.ToLower().Contains("nachqualifizierte schulbegleitung (jas)") || serviceRecord.ServiceDescription.Name.ToLower().Contains("kind krank nachqualifiziert (jas)"))
verfuegungszeit.ServiceDescription = DAOFactory.SearchDAO.FindServiceDescriptionForCategory(serviceRecord.ServiceDescription.ServiceCategory.Oid.Value).FirstOrDefault(sr => sr.Name.ToLower().Contains("verfügungszeit nachqualifiziert (jas)"));
else if (serviceRecord.ServiceDescription.Name.ToLower().Contains("einfache schulassistenz (jas)") || serviceRecord.ServiceDescription.Name.ToLower().Contains("kind krank einfache schulassistenz(jas)"))
verfuegungszeit.ServiceDescription = DAOFactory.SearchDAO.FindServiceDescriptionForCategory(serviceRecord.ServiceDescription.ServiceCategory.Oid.Value).FirstOrDefault(sr => sr.Name.ToLower().Contains("verfügungszeit einfache schulassistenz(jas)"));
else if (serviceRecord.ServiceDescription.Name.ToLower().Contains("qualifizierte schulassistenz (jas)") || serviceRecord.ServiceDescription.Name.ToLower().Contains("kind krank qualifiziert (jas)") || serviceRecord.ServiceDescription.Name.ToLower().Contains("kind krank (jas)"))
verfuegungszeit.ServiceDescription = DAOFactory.SearchDAO.FindServiceDescriptionForCategory(serviceRecord.ServiceDescription.ServiceCategory.Oid.Value).FirstOrDefault(sr => sr.Name.ToLower().Contains("verfügungszeit fachlich (jas)"));
if (verfuegungszeit.ServiceDescription != null)
DAOFactory.GenericDAO.Insert(verfuegungszeit);
}
public static ServiceRecord ErstelleVerfuegungszeitOhneInsert(ServiceRecord serviceRecord)
{
ServiceRecord verfuegungszeit = 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 = 30,
//Start = serviceRecord.Start.Value.AddMinutes((int)serviceRecord.RoundedDuration),
//End = serviceRecord.Start.Value.AddMinutes((int)serviceRecord.RoundedDuration + 30),
Start = serviceRecord.Start.Value.Date.AddSeconds(1),
End = serviceRecord.Start.Value.Date.AddMinutes(30).AddSeconds(1),
DurationInStunden = BS.Shared.ZeiterfassungsDauer.Minuten,
};
if (serviceRecord.ServiceDescription.Name.ToLower().Contains("nachqualifizierte schulbegleitung (jas)") || serviceRecord.ServiceDescription.Name.ToLower().Contains("kind krank nachqualifiziert (jas)"))
verfuegungszeit.ServiceDescription = DAOFactory.SearchDAO.FindServiceDescriptionForCategory(serviceRecord.ServiceDescription.ServiceCategory.Oid.Value).FirstOrDefault(sr => sr.Name.ToLower().Contains("verfügungszeit nachqualifiziert (jas)"));
else if (serviceRecord.ServiceDescription.Name.ToLower().Contains("einfache schulassistenz (jas)") || serviceRecord.ServiceDescription.Name.ToLower().Contains("kind krank einfache schulassistenz(jas)"))
verfuegungszeit.ServiceDescription = DAOFactory.SearchDAO.FindServiceDescriptionForCategory(serviceRecord.ServiceDescription.ServiceCategory.Oid.Value).FirstOrDefault(sr => sr.Name.ToLower().Contains("verfügungszeit einfache schulassistenz(jas)"));
else if (serviceRecord.ServiceDescription.Name.ToLower().Contains("qualifizierte schulassistenz (jas)") || serviceRecord.ServiceDescription.Name.ToLower().Contains("kind krank qualifiziert (jas)")|| serviceRecord.ServiceDescription.Name.ToLower().Contains("kind krank (jas)"))
verfuegungszeit.ServiceDescription = DAOFactory.SearchDAO.FindServiceDescriptionForCategory(serviceRecord.ServiceDescription.ServiceCategory.Oid.Value).FirstOrDefault(sr => sr.Name.ToLower().Contains("verfügungszeit fachlich (jas)"));
else if (serviceRecord.ServiceDescription.Name.ToLower().Contains("75%-fachliche schulassistenz jas") || serviceRecord.ServiceDescription.Name.ToLower().Contains("75%-kind krank qualifiziert jas") )
verfuegungszeit.ServiceDescription = DAOFactory.SearchDAO.FindServiceDescriptionForCategory(serviceRecord.ServiceDescription.ServiceCategory.Oid.Value).FirstOrDefault(sr => sr.Name.ToLower().Contains("75%-verfügungszeit fachlich jas"));
return verfuegungszeit;
}
}
}