From e486bfd3957b517004741aa1fa58a38d27509d94 Mon Sep 17 00:00:00 2001 From: Alexandra Date: Thu, 12 Mar 2026 10:28:02 +0100 Subject: [PATCH] =?UTF-8?q?SearchDAO=20-=20GetAdditionalServiceBookingsFor?= =?UTF-8?q?Customer=20Filterung=20pro=20Bereich=20und=20Customer=20jeweils?= =?UTF-8?q?=20nur=20h=C3=B6chste=20OID=20-=20es=20kann=20mehrere=20aktive?= =?UTF-8?q?=20geben?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Data/Access/SearchDAO.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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)