From 324a63cf9a5e9792108af0fe7018fc7b6d9123d7 Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner Date: Tue, 11 Jun 2024 01:22:43 +0200 Subject: [PATCH] DeliveryAdminWindow: Fix modifier bug --- Elwig/Helpers/AppDbContext.cs | 26 +++++++++++------------ Elwig/Windows/DeliveryAdminWindow.xaml.cs | 7 ++++-- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/Elwig/Helpers/AppDbContext.cs b/Elwig/Helpers/AppDbContext.cs index 1fdb9fe..8ccb3f5 100644 --- a/Elwig/Helpers/AppDbContext.cs +++ b/Elwig/Helpers/AppDbContext.cs @@ -241,23 +241,23 @@ namespace Elwig.Helpers { .LastAsync(); } - public void UpdateDeliveryPartModifiers(DeliveryPart part, IEnumerable modifiers) { + public void UpdateDeliveryPartModifiers(DeliveryPart part, IEnumerable oldModifiers, IEnumerable newModifiers) { foreach (var m in Modifiers.Where(m => m.Year == part.Year)) { - var mod = part.PartModifiers.Where(pa => pa.ModId == m.ModId).FirstOrDefault(); - if (modifiers.Contains(m)) { - var dpm = new DeliveryPartModifier { - Year = part.Year, - DId = part.DId, - DPNr = part.DPNr, - ModId = m.ModId, - }; - if (mod == null) { - Add(dpm); + var mod = new DeliveryPartModifier { + Year = part.Year, + DId = part.DId, + DPNr = part.DPNr, + ModId = m.ModId, + }; + var old = oldModifiers.Where(pa => pa.ModId == m.ModId).FirstOrDefault(); + if (newModifiers.Any(md => md.ModId == m.ModId)) { + if (old == null) { + Add(mod); } else { - Update(dpm); + Update(mod); } } else { - if (mod != null) { + if (old != null) { Remove(mod); } } diff --git a/Elwig/Windows/DeliveryAdminWindow.xaml.cs b/Elwig/Windows/DeliveryAdminWindow.xaml.cs index 058ccd2..47c7fd4 100644 --- a/Elwig/Windows/DeliveryAdminWindow.xaml.cs +++ b/Elwig/Windows/DeliveryAdminWindow.xaml.cs @@ -1267,7 +1267,10 @@ namespace Elwig.Windows { ctx.Add(p); } - ctx.UpdateDeliveryPartModifiers(p, ModifiersInput.SelectedItems.Cast()); + ctx.UpdateDeliveryPartModifiers(p, await ctx.DeliveryPartModifiers + .Where(m => m.Year == p.Year && m.DId == p.DId && m.DPNr == p.DPNr) + .Select(m => m.Modifier) + .ToListAsync(), ModifiersInput.SelectedItems.Cast()); if (originalMgNr != null && originalMgNr.Value != d.MgNr) { // update origin (KgNr), if default is selected @@ -1592,7 +1595,7 @@ namespace Elwig.Windows { p2.HkId = "OEST"; ctx.Add(p2); - ctx.UpdateDeliveryPartModifiers(p2, p.Modifiers); + ctx.UpdateDeliveryPartModifiers(p2, [], p.Modifiers); } await ctx.SaveChangesAsync(); await RefreshDeliveryParts();