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

296 lines
19 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 (LeistungQualifiziertFuerVerfuegungszeit(sr.ServiceDescription.Name.ToLower()) && sr.Start.HasValue && sr.SupportConcept != null)
{
// 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 bool LeistungQualifiziertFuerVerfuegungszeit(string leistung)
{
if (leistung.Contains("qualifizierte schulassistenz (jas)") ||
leistung.Contains("einfache schulassistenz (jas)") ||
leistung.Contains("schulassistenz einfach jas") ||
leistung.Contains("nachqualifizierte schulbegleitung (jas)") ||
leistung.Contains("kind krank") ||
leistung.Contains("75%-fachliche schulassistenz jas") ||
leistung.Contains("qualifizierte schulbegleitung (egh)") ||
leistung.Contains("schulbegleitung leistungsgr. 1i(jas)") ||
leistung.Contains("kind krank sb leistungsgr.1i(jas)") ||
leistung.Contains("schulassistenz leistungsgr.1ii") ||
leistung.Contains("kind krank leistungsgr.1ii(jas)") ||
leistung.Contains("nachqualifizierte sb leistungsgr.1iii(jas)") ||
leistung.Contains("kind krank nachqualifiziert leistungsgr. 1iii(jas)") ||
leistung.Contains("fachliche sb leistungsgr. 2(jas)") ||
leistung.Contains("fachliche sb leistungsgr. 3 (jas)") ||
leistung.Contains("kind krank fachlich leistungsgr. 2(jas)") ||
leistung.Contains("kind krank lg 3 (jas)") ||
leistung.Contains("bewilligte zusatzleistung sb leistungsgr.1i(jas)") ||
leistung.Contains("bewilligte zusatzleistung sb leistungsgr.1ii(jas)") ||
leistung.Contains("bewilligte zusatzleistung nachqualifiziert leistungsgr.1iii (jas)") ||
leistung.Contains("bewilligte zusatzleistung fachlich leistungsgr.2 (jas)") ||
leistung.Contains("bewilligte zusatzleistung lg 3 (jas)"))
{
return true;
}
return false;
}
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,
};
var leistung = serviceRecord.ServiceDescription.Name.ToLower();
// verfügungszeit nachqualifiziert (jas)
if (leistung.Contains("nachqualifizierte schulbegleitung (jas)") ||
leistung.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)"));
}
// verfügungszeit einfache schulassistenz(jas)
else if (leistung.Contains("einfache schulassistenz (jas)") ||
leistung.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)"));
}
// verfügungszeit einfach jas
else if (leistung.Contains("schulassistenz einfach jas") ||
leistung.Contains("kind krank einfache schulassistenz(jas)") ||
leistung.Contains("kind krank einfach jas"))
{
verfuegungszeit.ServiceDescription = DAOFactory.SearchDAO.FindServiceDescriptionForCategory(serviceRecord.ServiceDescription.ServiceCategory.Oid.Value).FirstOrDefault(sr => sr.Name.ToLower().Contains("verfügungszeit einfach jas"));
}
// verfügungszeit fachlich(jas)
else if (leistung.Contains("qualifizierte schulassistenz (jas)") ||
leistung.Contains("kind krank qualifiziert (jas)") ||
leistung.Contains("kind krank (jas)"))
{
verfuegungszeit.ServiceDescription = DAOFactory.SearchDAO.FindServiceDescriptionForCategory(serviceRecord.ServiceDescription.ServiceCategory.Oid.Value).FirstOrDefault(sr => sr.Name.ToLower().Contains("verfügungszeit fachlich (jas)"));
}
// +75%verfügungszeit fachlich jas
else if (leistung.Contains("75%-fachliche schulassistenz jas") ||
leistung.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"));
}
// verfügungszeit sb leistungsgr.1i(jas)
else if (leistung.Contains("schulbegleitung leistungsgr. 1i(jas)") ||
leistung.Contains("kind krank sb leistungsgr.1i(jas)") ||
leistung.Contains("bewilligte zusatzleistung sb leistungsgr.1i(jas)"))
{
verfuegungszeit.ServiceDescription = DAOFactory.SearchDAO.FindServiceDescriptionForCategory(serviceRecord.ServiceDescription.ServiceCategory.Oid.Value).FirstOrDefault(sr => sr.Name.ToLower().Contains("verfügungszeit sb leistungsgr.1i(jas)"));
}
// verfügungszeit sb leistungsgr.1ii(jas)
else if (leistung.Contains("schulassistenz leistungsgr.1ii") ||
leistung.Contains("kind krank leistungsgr. 1ii") ||
leistung.Contains("bewilligte zusatzleistung sb leistungsgr.1ii(jas)"))
{
verfuegungszeit.ServiceDescription = DAOFactory.SearchDAO.FindServiceDescriptionForCategory(serviceRecord.ServiceDescription.ServiceCategory.Oid.Value).FirstOrDefault(sr => sr.Name.ToLower().Contains("verfügungszeit leistungsgr. 1ii"));
}
// verfügungszeit nachqualifiziert leistungsgr.1iii(jas)
else if (leistung.Contains("nachqualifizierte sb leistungsgr.1iii(jas)") ||
leistung.Contains("kind krank nachqualifiziert leistungsgr. 1iii(jas)") ||
leistung.Contains("bewilligte zusatzleistung nachqualifiziert leistungsgr.1iii (jas)"))
{
verfuegungszeit.ServiceDescription = DAOFactory.SearchDAO.FindServiceDescriptionForCategory(serviceRecord.ServiceDescription.ServiceCategory.Oid.Value).FirstOrDefault(sr => sr.Name.ToLower().Contains("verfügungszeit nachqualifiziert leistungsgr.1iii(jas)"));
}
// verfügungszeit fachlich leistungsgr. 2 (jas)
else if (leistung.Contains("fachliche sb leistungsgr. 2(jas)") ||
leistung.Contains("kind krank fachlich leistungsgr. 2(jas)") ||
leistung.Contains("bewilligte zusatzleistung fachlich leistungsgr.2 (jas)"))
{
verfuegungszeit.ServiceDescription = DAOFactory.SearchDAO.FindServiceDescriptionForCategory(serviceRecord.ServiceDescription.ServiceCategory.Oid.Value).FirstOrDefault(sr => sr.Name.ToLower().Contains("verfügungszeit fachlich leistungsgr. 2 (jas)"));
}
// verfügungszeit lg 3 (jas)
else if (leistung.Contains("fachliche sb leistungsgr. 3 (jas)") ||
leistung.Contains("kind krank lg 3 (jas)") ||
leistung.Contains("bewilligte zusatzleistung lg 3 (jas)"))
{
verfuegungszeit.ServiceDescription = DAOFactory.SearchDAO.FindServiceDescriptionForCategory(serviceRecord.ServiceDescription.ServiceCategory.Oid.Value).FirstOrDefault(sr => sr.Name.ToLower().Contains("verfügungszeit lg 3 (jas)"));
}
// vorbereitungszeit fachlich egh
else if (leistung.Contains("qualifizierte schulbegleitung (egh)"))
{
verfuegungszeit.ServiceDescription = DAOFactory.SearchDAO.FindServiceDescriptionForCategory(serviceRecord.ServiceDescription.ServiceCategory.Oid.Value).FirstOrDefault(sr => sr.Name.ToLower().Contains("vorbereitungszeit fachlich egh"));
}
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,
};
var leistung = serviceRecord.ServiceDescription.Name.ToLower();
// verfügungszeit nachqualifiziert (jas)
if (leistung.Contains("nachqualifizierte schulbegleitung (jas)") ||
leistung.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)"));
}
// verfügungszeit einfache schulassistenz(jas)
else if (leistung.Contains("einfache schulassistenz (jas)") ||
leistung.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)"));
}
// verfügungszeit einfach jas
else if (leistung.Contains("schulassistenz einfach jas") ||
leistung.Contains("kind krank einfache schulassistenz(jas)") ||
leistung.Contains("kind krank einfach jas"))
{
verfuegungszeit.ServiceDescription = DAOFactory.SearchDAO.FindServiceDescriptionForCategory(serviceRecord.ServiceDescription.ServiceCategory.Oid.Value).FirstOrDefault(sr => sr.Name.ToLower().Contains("verfügungszeit einfach jas"));
}
// verfügungszeit fachlich(jas)
else if (leistung.Contains("qualifizierte schulassistenz (jas)") ||
leistung.Contains("kind krank qualifiziert (jas)") ||
leistung.Contains("kind krank (jas)"))
{
verfuegungszeit.ServiceDescription = DAOFactory.SearchDAO.FindServiceDescriptionForCategory(serviceRecord.ServiceDescription.ServiceCategory.Oid.Value).FirstOrDefault(sr => sr.Name.ToLower().Contains("verfügungszeit fachlich (jas)"));
}
// +75%verfügungszeit fachlich jas
else if (leistung.Contains("75%-fachliche schulassistenz jas") ||
leistung.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"));
}
// verfügungszeit sb leistungsgr.1i(jas)
else if (leistung.Contains("schulbegleitung leistungsgr. 1i(jas)") ||
leistung.Contains("kind krank sb leistungsgr.1i(jas)") ||
leistung.Contains("bewilligte zusatzleistung sb leistungsgr.1i(jas)"))
{
verfuegungszeit.ServiceDescription = DAOFactory.SearchDAO.FindServiceDescriptionForCategory(serviceRecord.ServiceDescription.ServiceCategory.Oid.Value).FirstOrDefault(sr => sr.Name.ToLower().Contains("verfügungszeit sb leistungsgr.1i(jas)"));
}
// verfügungszeit sb leistungsgr.1ii(jas)
else if (leistung.Contains("schulbegleitung leistungsgr. 1ii(jas)") ||
leistung.Contains("kind krank leistungsgr.1ii(jas)") ||
leistung.Contains("bewilligte zusatzleistung sb leistungsgr.1ii(jas)"))
{
verfuegungszeit.ServiceDescription = DAOFactory.SearchDAO.FindServiceDescriptionForCategory(serviceRecord.ServiceDescription.ServiceCategory.Oid.Value).FirstOrDefault(sr => sr.Name.ToLower().Contains("verfügungszeit sb leistungsgr.1ii(jas)"));
}
// verfügungszeit nachqualifiziert leistungsgr.1iii(jas)
else if (leistung.Contains("nachqualifizierte sb leistungsgr.1iii(jas)") ||
leistung.Contains("kind krank nachqualifiziert leistungsgr. 1iii(jas)") ||
leistung.Contains("bewilligte zusatzleistung nachqualifiziert leistungsgr.1iii (jas)"))
{
verfuegungszeit.ServiceDescription = DAOFactory.SearchDAO.FindServiceDescriptionForCategory(serviceRecord.ServiceDescription.ServiceCategory.Oid.Value).FirstOrDefault(sr => sr.Name.ToLower().Contains("verfügungszeit nachqualifiziert leistungsgr.1iii(jas)"));
}
// verfügungszeit fachlich leistungsgr. 2 (jas)
else if (leistung.Contains("fachliche sb leistungsgr. 2(jas)") ||
leistung.Contains("kind krank fachlich leistungsgr. 2(jas)") ||
leistung.Contains("bewilligte zusatzleistung fachlich leistungsgr.2 (jas)"))
{
verfuegungszeit.ServiceDescription = DAOFactory.SearchDAO.FindServiceDescriptionForCategory(serviceRecord.ServiceDescription.ServiceCategory.Oid.Value).FirstOrDefault(sr => sr.Name.ToLower().Contains("verfügungszeit fachlich leistungsgr. 2 (jas)"));
}
// verfügungszeit lg 3 (jas)
else if (leistung.Contains("fachliche sb leistungsgr. 3 (jas)") ||
leistung.Contains("kind krank lg 3 (jas)") ||
leistung.Contains("bewilligte zusatzleistung lg 3 (jas)"))
{
verfuegungszeit.ServiceDescription = DAOFactory.SearchDAO.FindServiceDescriptionForCategory(serviceRecord.ServiceDescription.ServiceCategory.Oid.Value).FirstOrDefault(sr => sr.Name.ToLower().Contains("verfügungszeit lg 3 (jas)"));
}
// vorbereitungszeit fachlich egh
else if (leistung.Contains("qualifizierte schulbegleitung (egh)"))
{
verfuegungszeit.ServiceDescription = DAOFactory.SearchDAO.FindServiceDescriptionForCategory(serviceRecord.ServiceDescription.ServiceCategory.Oid.Value).FirstOrDefault(sr => sr.Name.ToLower().Contains("vorbereitungszeit fachlich egh"));
}
return verfuegungszeit;
}
}
}