SearchDAO - GetAdditionalServiceBookingsForCustomer Filterung pro Bereich und Customer jeweils nur höchste OID - es kann mehrere aktive geben
This commit is contained in:
@@ -1286,11 +1286,19 @@ namespace BeWo.Data.Access
|
||||
|
||||
public IEnumerable<AdditionalServiceBooking> GetAdditionalServiceBookingsForCustomer(long customerOid, DateTime start, DateTime end)
|
||||
{
|
||||
return CreateCriteriaIsActive<AdditionalServiceBooking>()
|
||||
var addServices = CreateCriteriaIsActive<AdditionalServiceBooking>()
|
||||
.CreateAlias(AdditionalServiceBooking.PropertyName_Customer2AddServiceBookings, "c2s", JoinType.InnerJoin)
|
||||
.Add(Restrictions.Between("Datum", start, end))
|
||||
.Add(Restrictions.Eq("c2s.CustomerOid", customerOid))
|
||||
.List<AdditionalServiceBooking>();
|
||||
// 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)
|
||||
|
||||
Reference in New Issue
Block a user