[#10] ViewModels: Unify FilterMember property

This commit is contained in:
2024-07-05 21:21:33 +02:00
parent 432aa55df9
commit 3a01598a66
6 changed files with 22 additions and 12 deletions

View File

@ -268,11 +268,11 @@ namespace Elwig {
} }
public static DeliveryAdminWindow FocusMemberDeliveries(int mgnr) { public static DeliveryAdminWindow FocusMemberDeliveries(int mgnr) {
return FocusWindow<DeliveryAdminWindow>(() => new(mgnr), w => w.ViewModel.FilterMgNr == mgnr); return FocusWindow<DeliveryAdminWindow>(() => new(mgnr), w => w.ViewModel.FilterMember?.MgNr == mgnr);
} }
public static AreaComAdminWindow FocusMemberAreaComs(int mgnr) { public static AreaComAdminWindow FocusMemberAreaComs(int mgnr) {
return FocusWindow<AreaComAdminWindow>(() => new(mgnr), w => w.ViewModel.Member.MgNr == mgnr); return FocusWindow<AreaComAdminWindow>(() => new(mgnr), w => w.ViewModel.FilterMember.MgNr == mgnr);
} }
public static BaseDataWindow FocusBaseData() { public static BaseDataWindow FocusBaseData() {

View File

@ -12,7 +12,7 @@ namespace Elwig.Services {
public static async Task InitInputs(this AreaComAdminViewModel vm) { public static async Task InitInputs(this AreaComAdminViewModel vm) {
using var ctx = new AppDbContext(); using var ctx = new AppDbContext();
vm.FbNr = await ctx.NextFbNr(); vm.FbNr = await ctx.NextFbNr();
vm.MgNr = vm.Member.MgNr; vm.MgNr = vm.FilterMember.MgNr;
vm.YearFrom = Utils.CurrentYear; vm.YearFrom = Utils.CurrentYear;
vm.WineCult = null; vm.WineCult = null;
} }
@ -36,7 +36,7 @@ namespace Elwig.Services {
public static async Task<(List<string>, IQueryable<AreaCom>, List<string>)> GetFilters(this AreaComAdminViewModel vm, AppDbContext ctx) { public static async Task<(List<string>, IQueryable<AreaCom>, List<string>)> GetFilters(this AreaComAdminViewModel vm, AppDbContext ctx) {
List<string> filterNames = []; List<string> filterNames = [];
IQueryable<AreaCom> areaComQuery = ctx.AreaCommitments.Where(a => a.MgNr == vm.Member.MgNr).OrderBy(a => a.FbNr); IQueryable<AreaCom> areaComQuery = ctx.AreaCommitments.Where(a => a.MgNr == vm.FilterMember.MgNr).OrderBy(a => a.FbNr);
if (vm.ShowOnlyActiveAreaComs) { if (vm.ShowOnlyActiveAreaComs) {
areaComQuery = Utils.ActiveAreaCommitments(areaComQuery); areaComQuery = Utils.ActiveAreaCommitments(areaComQuery);
filterNames.Add("laufend"); filterNames.Add("laufend");

View File

@ -6,6 +6,11 @@ using System.Linq;
namespace Elwig.ViewModels { namespace Elwig.ViewModels {
public partial class AreaComAdminViewModel : ObservableObject { public partial class AreaComAdminViewModel : ObservableObject {
[ObservableProperty]
private string _title = "Flächenbindungen - Elwig";
public required Member FilterMember { get; set; }
[ObservableProperty] [ObservableProperty]
private string? _searchQuery = ""; private string? _searchQuery = "";
public List<string> TextFilter { public List<string> TextFilter {
@ -13,8 +18,6 @@ namespace Elwig.ViewModels {
set => SearchQuery = string.Join(' ', value.Where(e => e.Length > 0)); set => SearchQuery = string.Join(' ', value.Where(e => e.Length > 0));
} }
public required Member Member { get; set; }
[ObservableProperty] [ObservableProperty]
private bool _showOnlyActiveAreaComs; private bool _showOnlyActiveAreaComs;

View File

@ -14,13 +14,12 @@ namespace Elwig.ViewModels {
[ObservableProperty] [ObservableProperty]
private string _title = "Lieferungen - Elwig"; private string _title = "Lieferungen - Elwig";
public Member? FilterMember { get; set; }
[ObservableProperty] [ObservableProperty]
private string? _searchQuery = ""; private string? _searchQuery = "";
public List<string> TextFilter => [.. SearchQuery?.ToLower().Split(' ').ToList().FindAll(e => e.Length > 0)]; public List<string> TextFilter => [.. SearchQuery?.ToLower().Split(' ').ToList().FindAll(e => e.Length > 0)];
public Member? FilterMember { get; set; }
public int? FilterMgNr => FilterMember?.MgNr;
[ObservableProperty] [ObservableProperty]
private string? _lastScaleError; private string? _lastScaleError;
[ObservableProperty] [ObservableProperty]

View File

@ -6,7 +6,7 @@
xmlns:local="clr-namespace:Elwig.Windows" xmlns:local="clr-namespace:Elwig.Windows"
xmlns:ctrl="clr-namespace:Elwig.Controls" xmlns:ctrl="clr-namespace:Elwig.Controls"
xmlns:vm="clr-namespace:Elwig.ViewModels" xmlns:vm="clr-namespace:Elwig.ViewModels"
Title="Flächenbindungen - Elwig" Height="500" MinHeight="440" Width="920" MinWidth="860" Title="{Binding Title}" Height="500" MinHeight="440" Width="920" MinWidth="860"
Loaded="Window_Loaded"> Loaded="Window_Loaded">
<Window.DataContext> <Window.DataContext>
<vm:AreaComAdminViewModel/> <vm:AreaComAdminViewModel/>

View File

@ -21,8 +21,8 @@ namespace Elwig.Windows {
InitializeComponent(); InitializeComponent();
CommandBindings.Add(new CommandBinding(CtrlF, FocusSearchInput)); CommandBindings.Add(new CommandBinding(CtrlF, FocusSearchInput));
using var ctx = new AppDbContext(); using var ctx = new AppDbContext();
ViewModel.Member = ctx.Members.Find(mgnr) ?? throw new ArgumentException("MgNr argument has invalid value"); ViewModel.FilterMember = ctx.Members.Find(mgnr) ?? throw new ArgumentException("MgNr argument has invalid value");
Title = $"Flächenbindungen - {ViewModel.Member.AdministrativeName} - Elwig"; ViewModel.Title = $"Flächenbindungen - {ViewModel.FilterMember.AdministrativeName} - Elwig";
ExemptInputs = [ ExemptInputs = [
MgNrInput, AreaCommitmentList, NewAreaCommitmentButton, MgNrInput, AreaCommitmentList, NewAreaCommitmentButton,
EditAreaCommitmentButton, DeleteAreaCommitmentButton, AreaCommitmentSaveButton, EditAreaCommitmentButton, DeleteAreaCommitmentButton, AreaCommitmentSaveButton,
@ -119,6 +119,14 @@ namespace Elwig.Windows {
protected override async Task OnRenewContext(AppDbContext ctx) { protected override async Task OnRenewContext(AppDbContext ctx) {
await base.OnRenewContext(ctx); await base.OnRenewContext(ctx);
if (await ctx.Members.FindAsync(ViewModel.FilterMember.MgNr) is not Member m) {
Close();
return;
}
ViewModel.FilterMember = m;
ViewModel.Title = $"Lieferungen - {ViewModel.FilterMember.AdministrativeName} - Elwig";
ControlUtils.RenewItemsSource(KgInput, await ctx.WbKgs ControlUtils.RenewItemsSource(KgInput, await ctx.WbKgs
.Include(k => k.AtKg.WbKg!.Rds) .Include(k => k.AtKg.WbKg!.Rds)
.Select(k => k.AtKg) .Select(k => k.AtKg)