diff --git a/Elwig/App.xaml.cs b/Elwig/App.xaml.cs index ceddd24..414532a 100644 --- a/Elwig/App.xaml.cs +++ b/Elwig/App.xaml.cs @@ -268,11 +268,11 @@ namespace Elwig { } public static DeliveryAdminWindow FocusMemberDeliveries(int mgnr) { - return FocusWindow(() => new(mgnr), w => w.ViewModel.FilterMgNr == mgnr); + return FocusWindow(() => new(mgnr), w => w.ViewModel.FilterMember?.MgNr == mgnr); } public static AreaComAdminWindow FocusMemberAreaComs(int mgnr) { - return FocusWindow(() => new(mgnr), w => w.ViewModel.Member.MgNr == mgnr); + return FocusWindow(() => new(mgnr), w => w.ViewModel.FilterMember.MgNr == mgnr); } public static BaseDataWindow FocusBaseData() { diff --git a/Elwig/Services/AreaComService.cs b/Elwig/Services/AreaComService.cs index 0ae17cc..7ff4915 100644 --- a/Elwig/Services/AreaComService.cs +++ b/Elwig/Services/AreaComService.cs @@ -12,7 +12,7 @@ namespace Elwig.Services { public static async Task InitInputs(this AreaComAdminViewModel vm) { using var ctx = new AppDbContext(); vm.FbNr = await ctx.NextFbNr(); - vm.MgNr = vm.Member.MgNr; + vm.MgNr = vm.FilterMember.MgNr; vm.YearFrom = Utils.CurrentYear; vm.WineCult = null; } @@ -36,7 +36,7 @@ namespace Elwig.Services { public static async Task<(List, IQueryable, List)> GetFilters(this AreaComAdminViewModel vm, AppDbContext ctx) { List filterNames = []; - IQueryable areaComQuery = ctx.AreaCommitments.Where(a => a.MgNr == vm.Member.MgNr).OrderBy(a => a.FbNr); + IQueryable areaComQuery = ctx.AreaCommitments.Where(a => a.MgNr == vm.FilterMember.MgNr).OrderBy(a => a.FbNr); if (vm.ShowOnlyActiveAreaComs) { areaComQuery = Utils.ActiveAreaCommitments(areaComQuery); filterNames.Add("laufend"); diff --git a/Elwig/ViewModels/AreaComAdminViewModel.cs b/Elwig/ViewModels/AreaComAdminViewModel.cs index f7918e4..73ca90c 100644 --- a/Elwig/ViewModels/AreaComAdminViewModel.cs +++ b/Elwig/ViewModels/AreaComAdminViewModel.cs @@ -6,6 +6,11 @@ using System.Linq; namespace Elwig.ViewModels { public partial class AreaComAdminViewModel : ObservableObject { + [ObservableProperty] + private string _title = "Flächenbindungen - Elwig"; + + public required Member FilterMember { get; set; } + [ObservableProperty] private string? _searchQuery = ""; public List TextFilter { @@ -13,8 +18,6 @@ namespace Elwig.ViewModels { set => SearchQuery = string.Join(' ', value.Where(e => e.Length > 0)); } - public required Member Member { get; set; } - [ObservableProperty] private bool _showOnlyActiveAreaComs; diff --git a/Elwig/ViewModels/DeliveryAdminViewModel.cs b/Elwig/ViewModels/DeliveryAdminViewModel.cs index 89be54a..5e9d178 100644 --- a/Elwig/ViewModels/DeliveryAdminViewModel.cs +++ b/Elwig/ViewModels/DeliveryAdminViewModel.cs @@ -14,13 +14,12 @@ namespace Elwig.ViewModels { [ObservableProperty] private string _title = "Lieferungen - Elwig"; + public Member? FilterMember { get; set; } + [ObservableProperty] private string? _searchQuery = ""; public List TextFilter => [.. SearchQuery?.ToLower().Split(' ').ToList().FindAll(e => e.Length > 0)]; - public Member? FilterMember { get; set; } - public int? FilterMgNr => FilterMember?.MgNr; - [ObservableProperty] private string? _lastScaleError; [ObservableProperty] diff --git a/Elwig/Windows/AreaComAdminWindow.xaml b/Elwig/Windows/AreaComAdminWindow.xaml index 9dae5d5..bf3c7e4 100644 --- a/Elwig/Windows/AreaComAdminWindow.xaml +++ b/Elwig/Windows/AreaComAdminWindow.xaml @@ -6,7 +6,7 @@ xmlns:local="clr-namespace:Elwig.Windows" xmlns:ctrl="clr-namespace:Elwig.Controls" 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"> diff --git a/Elwig/Windows/AreaComAdminWindow.xaml.cs b/Elwig/Windows/AreaComAdminWindow.xaml.cs index 89c2429..59006b6 100644 --- a/Elwig/Windows/AreaComAdminWindow.xaml.cs +++ b/Elwig/Windows/AreaComAdminWindow.xaml.cs @@ -21,8 +21,8 @@ namespace Elwig.Windows { InitializeComponent(); CommandBindings.Add(new CommandBinding(CtrlF, FocusSearchInput)); using var ctx = new AppDbContext(); - ViewModel.Member = ctx.Members.Find(mgnr) ?? throw new ArgumentException("MgNr argument has invalid value"); - Title = $"Flächenbindungen - {ViewModel.Member.AdministrativeName} - Elwig"; + ViewModel.FilterMember = ctx.Members.Find(mgnr) ?? throw new ArgumentException("MgNr argument has invalid value"); + ViewModel.Title = $"Flächenbindungen - {ViewModel.FilterMember.AdministrativeName} - Elwig"; ExemptInputs = [ MgNrInput, AreaCommitmentList, NewAreaCommitmentButton, EditAreaCommitmentButton, DeleteAreaCommitmentButton, AreaCommitmentSaveButton, @@ -119,6 +119,14 @@ namespace Elwig.Windows { protected override async Task OnRenewContext(AppDbContext 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 .Include(k => k.AtKg.WbKg!.Rds) .Select(k => k.AtKg)