diff --git a/Host/Host.csproj.user b/Host/Host.csproj.user index 5ee002517..f8b116048 100644 --- a/Host/Host.csproj.user +++ b/Host/Host.csproj.user @@ -3,7 +3,7 @@ BeWo2.0 true - Release|Any CPU + Debug|Any CPU false diff --git a/ReportImp/SHKServiceSBD/Reports/VergleichArbeitszeitStundenplanReport.cs b/ReportImp/SHKServiceSBD/Reports/VergleichArbeitszeitStundenplanReport.cs index ec5704e86..d369fffa0 100644 --- a/ReportImp/SHKServiceSBD/Reports/VergleichArbeitszeitStundenplanReport.cs +++ b/ReportImp/SHKServiceSBD/Reports/VergleichArbeitszeitStundenplanReport.cs @@ -86,14 +86,23 @@ namespace SHKServiceSBD.Reports { var row = new VergleichRow(); row.Employee = String.Format("{0}", emp.Person.LastNameFirstName); - - var c = GetBetreutesKind(emp, datum); - if (c != null) + if (row.Employee.Contains("Hollmann")) { - row.Customer = String.Format("{0} {1}", c.Person.FirstName, c.Person.LastName); - - row.BetreuungszeitKind = GetStundenplanStunden(c, datum); + int test = 0; + } + var clist = GetBetreuteKinder(emp, datum); + row.Customer = ""; + foreach (var c in clist) + { + if (row.Customer.Length > 0) + { + row.Customer += ", "; + } + row.Customer += String.Format("{0} {1}", c.Person.FirstName, c.Person.LastName); + + row.BetreuungszeitKind += GetStundenplanStunden(c, emp, datum); } + if (IstMartinsschule(emp, datum, teamMartinsschule)) { row.Customer = "Martinsschule"; @@ -140,7 +149,7 @@ namespace SHKServiceSBD.Reports return teamMartinsschule.MemberList.Any(e => e.Oid == emp.Oid); } - private decimal GetStundenplanStunden(Customer c, DateTime datum) + private decimal GetStundenplanStunden(Customer c, Employee e, DateTime datum) { decimal stunden = 0; var az = ReportHelper.GetArbeitszeit(c, datum, datum); @@ -149,7 +158,10 @@ namespace SHKServiceSBD.Reports { foreach (var item in az.ArbeitszeitEintraege) { - stunden += item.BerechneStunden(); + if (item.Employee == null || item.Employee.Oid == e.Oid) + { + stunden += item.BerechneStunden(); + } } } return stunden; @@ -170,19 +182,22 @@ namespace SHKServiceSBD.Reports return stunden; } - private Customer GetBetreutesKind(Employee emp, DateTime datum) + private IList GetBetreuteKinder(Employee emp, DateTime datum) { - + var customerList = new List(); foreach (var e2c in emp.Employee2CustomerList.Where(e => e.IsActive == ActivationTypeId.Active && (!e.StartDate.HasValue || e.StartDate.Value.Date <= datum) && (!e.EndDate.HasValue || e.EndDate.Value.Date >= datum) - && e.ValueList.Any(v => v.Entry.Type == ValueListEntryType.StaffRoleType && v.Entry.Value.Contains("Hauptbetreu")))) + && e.ValueList.Any(v => v.Entry.Type == ValueListEntryType.StaffRoleType && v.Entry.Value.StartsWith("Hauptbetreu")))) { - return e2c.Customer; + if (e2c.Customer.IsActive == ActivationTypeId.Active) + { + customerList.Add(e2c.Customer); + } } - return null; + return customerList; } diff --git a/Service/SBD/VertretungsManager.cs b/Service/SBD/VertretungsManager.cs index a8bc4a1be..834d64f36 100644 --- a/Service/SBD/VertretungsManager.cs +++ b/Service/SBD/VertretungsManager.cs @@ -159,7 +159,7 @@ namespace BeWo.Service.SBD { var customer = customers.FirstOrDefault(first => first.Oid.HasValue && first.Oid.Equals(absenceTime.CustomerOid)) ?? DAOFactory.GenericDAO.LoadByID(absenceTime.CustomerOid.Value); - if (customer.Person.LastName.Contains("Platz")) + if (customer.Person.LastName.Contains("Seiden")) { } @@ -178,7 +178,7 @@ namespace BeWo.Service.SBD MigriereSubstitutionStatus(customer); var assistingEmployees = new List(); - customer.Arbeitszeiten.DoForEach(a => assistingEmployees.AddRangeIfElementsNotIn(a.ArbeitszeitEintraege.Where(ae => ae.Employee != null).Select(s => s.Employee))); + customer.Arbeitszeiten.Where(a => IsArbeitszeitValid(a, start, end)).DoForEach(a => assistingEmployees.AddRangeIfElementsNotIn(a.ArbeitszeitEintraege.Where(ae => ae.Employee != null).Select(s => s.Employee))); schoolAssistanceTimes.DoForEach(a => { @@ -1533,9 +1533,9 @@ namespace BeWo.Service.SBD { if (absenceTime == null || LiegtImZeitraum(dateTime, absenceTime)) { - customerAssistanceTimes.AddRange(allCustomerAssistanceTimes.Where(w => IsArbeitszeitValid(w, dateTime))); + customerAssistanceTimes.AddRange(allCustomerAssistanceTimes.Where(w => IsArbeitszeitValid(w, dateTime, dateTime))); - schoolAssistanceTimes.AddRange(allSchoolAssistanceTimes.Where(w => IsArbeitszeitValid(w, dateTime))); + schoolAssistanceTimes.AddRange(allSchoolAssistanceTimes.Where(w => IsArbeitszeitValid(w, dateTime, dateTime))); } dateTime = dateTime.AddDays(1); @@ -1553,29 +1553,9 @@ namespace BeWo.Service.SBD return assistanceTimeEntries; } - public virtual bool IsArbeitszeitValid(Arbeitszeit arbeitszeit, DateTime time) + public virtual bool IsArbeitszeitValid(Arbeitszeit arbeitszeit, DateTime start, DateTime end) { - if (arbeitszeit.GueltigVon == null && arbeitszeit.GueltigBis == null) - { - return true; - } - - if (arbeitszeit.GueltigVon.HasValue && arbeitszeit.GueltigBis.HasValue) - { - return time.InBetween(arbeitszeit.GueltigVon.Value, arbeitszeit.GueltigBis.Value, true); - } - - if (arbeitszeit.GueltigVon == null && arbeitszeit.GueltigBis.HasValue) - { - return time <= arbeitszeit.GueltigBis; - } - - if (arbeitszeit.GueltigBis == null) - { - return time >= arbeitszeit.GueltigVon; - } - - return false; + return (!arbeitszeit.GueltigVon.HasValue || arbeitszeit.GueltigVon <= end.Date) && (!arbeitszeit.GueltigBis.HasValue || arbeitszeit.GueltigBis >= start.Date); } public virtual List GetSchoolAssistanceTimes(Customer customer, DateTime start, DateTime end, AbsenceTime absenceTime) @@ -1599,7 +1579,7 @@ namespace BeWo.Service.SBD { if (LiegtImZeitraum(dateTime, absenceTime)) { - schoolAssistanceTimes.AddRange(allSchoolAssistanceTimes.Where(w => IsArbeitszeitValid(w, dateTime))); + schoolAssistanceTimes.AddRange(allSchoolAssistanceTimes.Where(w => IsArbeitszeitValid(w, dateTime, dateTime))); } dateTime = dateTime.AddDays(1);