Utils: Add ActiveAreaCommitments()

This commit is contained in:
2024-03-25 16:22:58 +01:00
parent c6e83ffff4
commit 3f9c4cb1f6
5 changed files with 15 additions and 6 deletions

View File

@ -488,5 +488,15 @@ namespace Elwig.Helpers {
return obj.GetHashCode(); return obj.GetHashCode();
} }
} }
public static IQueryable<AreaCom> ActiveAreaCommitments(IQueryable<AreaCom> query) => ActiveAreaCommitments(query, CurrentYear);
public static IQueryable<AreaCom> ActiveAreaCommitments(IQueryable<AreaCom> query, int yearTo) {
return query.Where(c => (c.YearFrom <= CurrentYear) && (c.YearTo == null || c.YearTo >= yearTo));
}
public static IEnumerable<AreaCom> ActiveAreaCommitments(IEnumerable<AreaCom> query) => ActiveAreaCommitments(query, CurrentYear);
public static IEnumerable<AreaCom> ActiveAreaCommitments(IEnumerable<AreaCom> query, int yearTo) {
return query.Where(c => (c.YearFrom <= CurrentYear) && (c.YearTo == null || c.YearTo >= yearTo));
}
} }
} }

View File

@ -156,9 +156,8 @@ namespace Elwig.Models.Entities {
[InverseProperty(nameof(AreaCom.Member))] [InverseProperty(nameof(AreaCom.Member))]
public virtual ICollection<AreaCom> AreaCommitments { get; private set; } = null!; public virtual ICollection<AreaCom> AreaCommitments { get; private set; } = null!;
public IEnumerable<AreaCom> ActiveAreaCommitments(AppDbContext ctx) { public IQueryable<AreaCom> ActiveAreaCommitments(AppDbContext ctx) {
return ctx.AreaCommitments return Utils.ActiveAreaCommitments(ctx.AreaCommitments.Where(c => c.MgNr == MgNr));
.Where(c => c.MgNr == MgNr && c.YearFrom <= Utils.CurrentYear && (c.YearTo ?? int.MaxValue) >= Utils.CurrentYear);
} }
[InverseProperty(nameof(BillingAddr.Member))] [InverseProperty(nameof(BillingAddr.Member))]

View File

@ -82,7 +82,7 @@ namespace Elwig.Windows {
List<string> filterNames = []; List<string> filterNames = [];
IQueryable<AreaCom> areaComQuery = ctx.AreaCommitments.Where(a => a.MgNr == Member.MgNr).OrderBy(a => a.FbNr); IQueryable<AreaCom> areaComQuery = ctx.AreaCommitments.Where(a => a.MgNr == Member.MgNr).OrderBy(a => a.FbNr);
if (ActiveAreaCommitmentInput.IsChecked == true) { 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"); filterNames.Add("aktiv");
} }

View File

@ -311,7 +311,7 @@ namespace Elwig.Windows {
if (RecipientsAreaComMembersInput.IsChecked == true) { if (RecipientsAreaComMembersInput.IsChecked == true) {
var vtrg = MemberAreaComInput.SelectedItems.Cast<AreaComType>().Select(a => a.VtrgId).ToList(); var vtrg = MemberAreaComInput.SelectedItems.Cast<AreaComType>().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) { } else if (year > 0 && RecipientsDeliveryMembersInput.IsChecked == true) {
query = query.Where(m => m.Deliveries.Any(d => d.Year == year)); query = query.Where(m => m.Deliveries.Any(d => d.Year == year));
} else if (year > 0 && RecipientsNonDeliveryMembersInput.IsChecked == true) { } else if (year > 0 && RecipientsNonDeliveryMembersInput.IsChecked == true) {

View File

@ -100,7 +100,7 @@ namespace Elwig.Windows {
var allMembers = await ctx.Members.Where(m => m.DefaultKgNr == k.KgNr).CountAsync(); var allMembers = await ctx.Members.Where(m => m.DefaultKgNr == k.KgNr).CountAsync();
StatusDefaultKgs.Text += $"{activeMembers:N0} ({allMembers:N0})"; StatusDefaultKgs.Text += $"{activeMembers:N0} ({allMembers:N0})";
var year = Utils.CurrentNextSeason; 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(); var allAreaComs = await ctx.AreaCommitments.Where(c => c.KgNr == k.KgNr).CountAsync();
StatusAreaCommitments.Text += $"{activeAreaComs:N0} ({allAreaComs:N0})"; StatusAreaCommitments.Text += $"{activeAreaComs:N0} ({allAreaComs:N0})";
var deliveryParts = await ctx.DeliveryParts.Where(p => p.KgNr == k.KgNr).CountAsync(); var deliveryParts = await ctx.DeliveryParts.Where(p => p.KgNr == k.KgNr).CountAsync();