From 3f9c4cb1f672688321c95f4c44d4732f45d83bb8 Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner Date: Mon, 25 Mar 2024 16:22:58 +0100 Subject: [PATCH] Utils: Add ActiveAreaCommitments() --- Elwig/Helpers/Utils.cs | 10 ++++++++++ Elwig/Models/Entities/Member.cs | 5 ++--- Elwig/Windows/AreaComAdminWindow.xaml.cs | 2 +- Elwig/Windows/MailWindow.xaml.cs | 2 +- Elwig/Windows/OriginHierarchyWindow.xaml.cs | 2 +- 5 files changed, 15 insertions(+), 6 deletions(-) diff --git a/Elwig/Helpers/Utils.cs b/Elwig/Helpers/Utils.cs index a0d8d50..f19059a 100644 --- a/Elwig/Helpers/Utils.cs +++ b/Elwig/Helpers/Utils.cs @@ -488,5 +488,15 @@ namespace Elwig.Helpers { return obj.GetHashCode(); } } + + public static IQueryable ActiveAreaCommitments(IQueryable query) => ActiveAreaCommitments(query, CurrentYear); + public static IQueryable ActiveAreaCommitments(IQueryable query, int yearTo) { + return query.Where(c => (c.YearFrom <= CurrentYear) && (c.YearTo == null || c.YearTo >= yearTo)); + } + + public static IEnumerable ActiveAreaCommitments(IEnumerable query) => ActiveAreaCommitments(query, CurrentYear); + public static IEnumerable ActiveAreaCommitments(IEnumerable query, int yearTo) { + return query.Where(c => (c.YearFrom <= CurrentYear) && (c.YearTo == null || c.YearTo >= yearTo)); + } } } diff --git a/Elwig/Models/Entities/Member.cs b/Elwig/Models/Entities/Member.cs index 8ec4586..1912742 100644 --- a/Elwig/Models/Entities/Member.cs +++ b/Elwig/Models/Entities/Member.cs @@ -156,9 +156,8 @@ namespace Elwig.Models.Entities { [InverseProperty(nameof(AreaCom.Member))] public virtual ICollection AreaCommitments { get; private set; } = null!; - public IEnumerable ActiveAreaCommitments(AppDbContext ctx) { - return ctx.AreaCommitments - .Where(c => c.MgNr == MgNr && c.YearFrom <= Utils.CurrentYear && (c.YearTo ?? int.MaxValue) >= Utils.CurrentYear); + public IQueryable ActiveAreaCommitments(AppDbContext ctx) { + return Utils.ActiveAreaCommitments(ctx.AreaCommitments.Where(c => c.MgNr == MgNr)); } [InverseProperty(nameof(BillingAddr.Member))] diff --git a/Elwig/Windows/AreaComAdminWindow.xaml.cs b/Elwig/Windows/AreaComAdminWindow.xaml.cs index a373b60..1c46713 100644 --- a/Elwig/Windows/AreaComAdminWindow.xaml.cs +++ b/Elwig/Windows/AreaComAdminWindow.xaml.cs @@ -82,7 +82,7 @@ namespace Elwig.Windows { List filterNames = []; IQueryable areaComQuery = ctx.AreaCommitments.Where(a => a.MgNr == Member.MgNr).OrderBy(a => a.FbNr); if (ActiveAreaCommitmentInput.IsChecked == true) { - areaComQuery = areaComQuery.Where(a => (a.YearFrom <= Utils.CurrentYear) && (a.YearTo == null || a.YearTo >= Utils.CurrentYear)); + areaComQuery = Utils.ActiveAreaCommitments(areaComQuery); filterNames.Add("aktiv"); } diff --git a/Elwig/Windows/MailWindow.xaml.cs b/Elwig/Windows/MailWindow.xaml.cs index ee20297..c56b896 100644 --- a/Elwig/Windows/MailWindow.xaml.cs +++ b/Elwig/Windows/MailWindow.xaml.cs @@ -311,7 +311,7 @@ namespace Elwig.Windows { if (RecipientsAreaComMembersInput.IsChecked == true) { var vtrg = MemberAreaComInput.SelectedItems.Cast().Select(a => a.VtrgId).ToList(); - query = query.Where(m => m.AreaCommitments.Any(a => a.YearFrom <= year && (a.YearTo == null || a.YearTo >= year) && vtrg.Contains(a.VtrgId))); + query = query.Where(m => Utils.ActiveAreaCommitments(m.AreaCommitments).Any(c => vtrg.Contains(c.VtrgId))); } else if (year > 0 && RecipientsDeliveryMembersInput.IsChecked == true) { query = query.Where(m => m.Deliveries.Any(d => d.Year == year)); } else if (year > 0 && RecipientsNonDeliveryMembersInput.IsChecked == true) { diff --git a/Elwig/Windows/OriginHierarchyWindow.xaml.cs b/Elwig/Windows/OriginHierarchyWindow.xaml.cs index 522722c..b95be98 100644 --- a/Elwig/Windows/OriginHierarchyWindow.xaml.cs +++ b/Elwig/Windows/OriginHierarchyWindow.xaml.cs @@ -100,7 +100,7 @@ namespace Elwig.Windows { var allMembers = await ctx.Members.Where(m => m.DefaultKgNr == k.KgNr).CountAsync(); StatusDefaultKgs.Text += $"{activeMembers:N0} ({allMembers:N0})"; var year = Utils.CurrentNextSeason; - var activeAreaComs = await ctx.AreaCommitments.Where(c => c.KgNr == k.KgNr && c.YearFrom <= year && (c.YearTo == null || c.YearTo >= year)).CountAsync(); + var activeAreaComs = await Utils.ActiveAreaCommitments(ctx.AreaCommitments.Where(c => c.KgNr == k.KgNr), year).CountAsync(); var allAreaComs = await ctx.AreaCommitments.Where(c => c.KgNr == k.KgNr).CountAsync(); StatusAreaCommitments.Text += $"{activeAreaComs:N0} ({allAreaComs:N0})"; var deliveryParts = await ctx.DeliveryParts.Where(p => p.KgNr == k.KgNr).CountAsync();