diff --git a/Elwig/Services/MemberService.cs b/Elwig/Services/MemberService.cs index 0816f3f..2a7dd37 100644 --- a/Elwig/Services/MemberService.cs +++ b/Elwig/Services/MemberService.cs @@ -212,6 +212,7 @@ namespace Elwig.Services { var filterLfbisNr = new List(); var filterUstIdNr = new List(); var filterAreaCom = new List(); + var filterNotAreaCom = new List(); var filter = vm.TextFilter; if (filter.Count > 0) { @@ -314,10 +315,22 @@ namespace Elwig.Services { memberQuery = memberQuery.Where(m => m.TelephoneNumbers.Any(t => t.Number.Replace(" ", "").StartsWith(e))); filter.RemoveAt(i--); filterNames.Add($"Tel.-Nr. {e}"); + } else if (e.Length >= 5 && e.Length <= 14 && "flächenbindung".StartsWith(e, StringComparison.CurrentCultureIgnoreCase)) { + filterAreaCom.AddRange(areaComs.Keys); + filter.RemoveAt(i--); + filterNames.Add($"Flächenbindung"); + } else if (e.Length >= 6 && e.Length <= 15 && "!flächenbindung".StartsWith(e, StringComparison.CurrentCultureIgnoreCase)) { + filterNotAreaCom.AddRange(areaComs.Keys); + filter.RemoveAt(i--); + filterNames.Add($"keine Flächenbindung"); } else if (areaComs.ContainsKey(e.ToUpper())) { filterAreaCom.Add(e.ToUpper()); filter.RemoveAt(i--); filterNames.Add($"Flächenbindung {e.ToUpper()}"); + } else if (e.Length >= 3 && e[0] == '!' && areaComs.ContainsKey(e[1..].ToUpper())) { + filterNotAreaCom.Add(e[1..].ToUpper()); + filter.RemoveAt(i--); + filterNames.Add($"ohne Flächenbindung {e[1..].ToUpper()}"); } else if (Validator.CheckLfbisNr(e)) { filterLfbisNr.Add(e); filter.RemoveAt(i--); @@ -337,6 +350,7 @@ namespace Elwig.Services { if (filterKgNr.Count > 0) memberQuery = memberQuery.Where(m => m.DefaultKgNr != null && filterKgNr.Contains((int)m.DefaultKgNr)); if (filterZwst.Count > 0) memberQuery = memberQuery.Where(m => m.ZwstId != null && filterZwst.Contains(m.ZwstId)); if (filterAreaCom.Count > 0) memberQuery = memberQuery.Where(m => m.AreaCommitments.AsQueryable().Where(Utils.ActiveAreaCommitments()).Any(c => filterAreaCom.Contains(c.VtrgId))); + if (filterNotAreaCom.Count > 0) memberQuery = memberQuery.Where(m => !m.AreaCommitments.AsQueryable().Where(Utils.ActiveAreaCommitments()).All(c => filterNotAreaCom.Contains(c.VtrgId))); if (filterLfbisNr.Count > 0) memberQuery = memberQuery.Where(m => m.LfbisNr != null && filterLfbisNr.Contains(m.LfbisNr)); if (filterUstIdNr.Count > 0) memberQuery = memberQuery.Where(m => m.UstIdNr != null && filterUstIdNr.Contains(m.UstIdNr)); } diff --git a/Elwig/Windows/MemberAdminWindow.xaml b/Elwig/Windows/MemberAdminWindow.xaml index f9baf26..93ab3c8 100644 --- a/Elwig/Windows/MemberAdminWindow.xaml +++ b/Elwig/Windows/MemberAdminWindow.xaml @@ -201,7 +201,7 @@ Telefon-Nr.: z.B. +436641234, .... Kontaktdaten: email (mind. 1 E-Mail-Adr.), telnr (mind. 1 Tel.-Nr.), !email (keine E-Mail-Adr.), !telnr (keine Tel.-Nr.) Kontaktart: kontakt:email, kontakt:post, !kontakt:email, !kontakt:post - Flächenbindungen: z.B. zw, GVK, WRB, ... (Mitglieder mit aktiven Flächenbindungen) + Flächenbindungen: z.B. zw, GVK, WRB, Fläch[enbindung], !GVK, ... (Mitglieder mit aktiven Flächenbindungen) Freitext: z.B. Rechnungsaddresse, Anmerkung, "matzen" (sucht nach dem Text "matzen")