diff --git a/Elwig/Helpers/Utils.cs b/Elwig/Helpers/Utils.cs index 5bece0c..e4a350d 100644 --- a/Elwig/Helpers/Utils.cs +++ b/Elwig/Helpers/Utils.cs @@ -10,6 +10,9 @@ using System.Windows.Controls.Primitives; namespace Elwig.Helpers { public static class Utils { + + public static int CurrentSeason => DateTime.Now.Year - (DateTime.Now.Month <= 3 ? 1 : 0); + public static void SetInputChanged(Control input) { var brush = Brushes.Orange; if (input is ComboBox cb) { diff --git a/Elwig/Models/Member.cs b/Elwig/Models/Member.cs index 06501c8..0e2b5b2 100644 --- a/Elwig/Models/Member.cs +++ b/Elwig/Models/Member.cs @@ -1,3 +1,4 @@ +using Elwig.Helpers; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; @@ -144,6 +145,11 @@ namespace Elwig.Models { [InverseProperty("Member")] public virtual ISet Contracts { get; private set; } + [NotMapped] + public virtual ISet ActiveContracts => Contracts + .Where(c => c.YearFrom <= Utils.CurrentSeason && (c.YearTo ?? int.MaxValue) >= Utils.CurrentSeason) + .ToHashSet(); + [InverseProperty("Member")] public virtual BillingAddr BillingAddress { get; private set; } diff --git a/Elwig/Windows/MemberAdminWindow.xaml.cs b/Elwig/Windows/MemberAdminWindow.xaml.cs index 98543ba..1f43986 100644 --- a/Elwig/Windows/MemberAdminWindow.xaml.cs +++ b/Elwig/Windows/MemberAdminWindow.xaml.cs @@ -387,7 +387,7 @@ namespace Elwig.Windows { case "email": ContactEmailInput.IsChecked = true; break; } - AreaCommitment.Text = $"{m.Contracts.Select(c => c.Area).Sum():N0} m²"; + AreaCommitment.Text = $"{m.ActiveContracts.Select(c => c.Area).Sum():N0} m²"; Menu_Member_SendEmail.IsEnabled = m.Email != null;