From 90450845856721b77b5b3ccc51119d34e830fe50 Mon Sep 17 00:00:00 2001 From: HirschleM Date: Tue, 25 Feb 2025 13:27:30 +0100 Subject: [PATCH] MH: Dienstplaner Bugfix --- Service/Dienstplanung/DienstplanungsManager.cs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/Service/Dienstplanung/DienstplanungsManager.cs b/Service/Dienstplanung/DienstplanungsManager.cs index aecab2c97..0417bdb9d 100644 --- a/Service/Dienstplanung/DienstplanungsManager.cs +++ b/Service/Dienstplanung/DienstplanungsManager.cs @@ -572,7 +572,23 @@ namespace BeWo.Service.Dienstplanung for (int i = 0; i < zeile.DienstDictArray.Length; i++) { var empDienste = dienstvertretungenDC - .Where(x => x.EmployeeOid == emp.EmployeeOid && x.Zeile == i); + .Where(x => x.EmployeeOid == emp.EmployeeOid && x.Zeile == i).ToList(); + + // Doppelte rausnehmen, die sollte es technisch eigentlich gar nicht geben + var doppelteEintraege = empDienste + .GroupBy(e => new { e.EmployeeOid, e.Zeile, e.Datum }) + .Where(g => g.Count() > 1) // Nur welche, die es mehr als einmal gibt + .SelectMany(g => g.Skip(1)) // Lässt das erste Element jeder Gruppe weg, damit beim Löschen der Doppelten einer übrig bleibt + .ToList(); + if (doppelteEintraege != null && doppelteEintraege.Count > 0) + { + for (int x = empDienste.Count - 1; x > 0; x--) + { + var dienst = empDienste[x]; + if (doppelteEintraege.Any(d => d.Oid == dienst.Oid)) + empDienste.RemoveAt(x); + } + } zeile.DienstDictArray[i] = empDienste .ToDictionary(x => x.Datum.Day, x => x.DienstOid);