diff --git a/Elwig/Windows/DeliveryAdminWindow.xaml b/Elwig/Windows/DeliveryAdminWindow.xaml index ed4d850..8b30e31 100644 --- a/Elwig/Windows/DeliveryAdminWindow.xaml +++ b/Elwig/Windows/DeliveryAdminWindow.xaml @@ -100,7 +100,7 @@ Filtern nach: Sorte: z.B. GV, ZW, rr, sa, !gv (ausgenommen GV), ... - Qualitätsstufe: z.B. QUW, kab, ldw, ... + Qualitätsstufe: z.B. QUW, kab, !ldw (ausgenommen LDW), ... Gradation: z.B. >73, <15, 17-18, 15-, >17,5, 62-75, ... Mitglied: z.B. 1234, 987, ... Saison: z.B. 2020, >2015, 2017-2019, <2005, 2019-, ... diff --git a/Elwig/Windows/DeliveryAdminWindow.xaml.cs b/Elwig/Windows/DeliveryAdminWindow.xaml.cs index bfd0cd3..5c7c78f 100644 --- a/Elwig/Windows/DeliveryAdminWindow.xaml.cs +++ b/Elwig/Windows/DeliveryAdminWindow.xaml.cs @@ -326,6 +326,7 @@ namespace Elwig.Windows { var filterVar = new List(); var filterNotVar = new List(); var filterQual = new List(); + var filterNotQual = new List(); var filterMgNr = new List(); var filterZwst = new List(); var filterAttr = new List(); @@ -358,6 +359,10 @@ namespace Elwig.Windows { filterQual.Add(e.ToUpper()); filter.RemoveAt(i--); filterNames.Add(qual[e.ToUpper()].Name); + } else if (e[0] == '!' && qual.ContainsKey(e[1..].ToUpper())) { + filterNotQual.Add(e[1..].ToUpper()); + filter.RemoveAt(i--); + filterNames.Add("außer " + qual[e[1..].ToUpper()].Name); } else if (e.All(char.IsAsciiDigit) && mgnr.TryGetValue(e, out var member)) { filterMgNr.Add(int.Parse(e)); filter.RemoveAt(i--); @@ -492,9 +497,10 @@ namespace Elwig.Windows { if (filterVar.Count > 0) dpq = dpq.Where(p => filterVar.Contains(p.SortId)); if (filterNotVar.Count > 0) dpq = dpq.Where(p => !filterNotVar.Contains(p.SortId)); if (filterQual.Count > 0) dpq = dpq.Where(p => filterQual.Contains(p.QualId)); + if (filterNotQual.Count > 0) dpq = dpq.Where(p => !filterNotQual.Contains(p.QualId)); if (filterZwst.Count > 0) dpq = dpq.Where(p => filterZwst.Contains(p.Delivery.ZwstId)); if (filterAttr.Count > 0) dpq = dpq.Where(p => p.AttrId != null && filterAttr.Contains(p.AttrId)); - if (filterNotAttr.Count > 0) dpq = dpq.Where(p => p.AttrId == null || !filterAttr.Contains(p.AttrId)); + if (filterNotAttr.Count > 0) dpq = dpq.Where(p => p.AttrId == null || !filterNotAttr.Contains(p.AttrId)); if (filterKmwGt > 0) dpq = dpq.Where(p => p.Kmw >= filterKmwGt); if (filterKmwLt > 0) dpq = dpq.Where(p => p.Kmw < filterKmwLt); if (filterOeGt > 0) dpq = dpq.Where(p => p.Kmw * (4.54 + 0.022 * p.Kmw) >= filterOeGt);