diff --git a/Data/Access/SearchDAO.cs b/Data/Access/SearchDAO.cs index b54da9659..7650017d2 100644 --- a/Data/Access/SearchDAO.cs +++ b/Data/Access/SearchDAO.cs @@ -1286,11 +1286,19 @@ namespace BeWo.Data.Access public IEnumerable GetAdditionalServiceBookingsForCustomer(long customerOid, DateTime start, DateTime end) { - return CreateCriteriaIsActive() + var addServices = CreateCriteriaIsActive() .CreateAlias(AdditionalServiceBooking.PropertyName_Customer2AddServiceBookings, "c2s", JoinType.InnerJoin) .Add(Restrictions.Between("Datum", start, end)) .Add(Restrictions.Eq("c2s.CustomerOid", customerOid)) .List(); + // AB, 12.03.2026: Problem ist, dass pro Customer jetzt mehrere Bereiche (Wohnheime) zutreffen können und dann für jeden Tag mehrere Einträge da sein können, + // Im Folgenden wird für jeden Tag und jeden Bereich nur der Eintrag mit der höchsten Oid beibehalten: + return addServices.Where(s => s.Datum.HasValue && s.AdditionalServiceRegion != null + && s.AdditionalServiceRegion.AdditionalService != null && s.AdditionalServiceRegion.AdditionalService.Name != null) + .GroupBy(s => new { Date = s.Datum.Value.Date, Name = s.AdditionalServiceRegion.AdditionalService.Name }) + .Select(g => g.Select(s => new { Service = s, Booking = s.Customer2AddServiceBookings?.Where(c2a => c2a != null && c2a.CustomerOid == customerOid) + .OrderByDescending(c2a => c2a.Oid).FirstOrDefault() }).Where(x => x.Booking != null) + .OrderByDescending(x => x.Booking.Oid).FirstOrDefault()?.Service).Where(s => s != null).ToList(); } public AssessmentSheetCategory GetAddServiceAssessmentSheetCategoryWithName(string name)