135 lines
9.3 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|