[#10] ViewModels: Unify FilterMember property

This commit is contained in:
2024-07-05 21:21:33 +02:00
parent 577fc16a52
commit abeb4ebc8a
6 changed files with 22 additions and 12 deletions

View File

@ -268,11 +268,11 @@ namespace Elwig {
}
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) {
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() {

View File

@ -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<string>, IQueryable<AreaCom>, List<string>)> GetFilters(this AreaComAdminViewModel vm, AppDbContext ctx) {
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) {
areaComQuery = Utils.ActiveAreaCommitments(areaComQuery);
filterNames.Add("laufend");

View File

@ -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<string> 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;

View File

@ -14,13 +14,12 @@ namespace Elwig.ViewModels {
[ObservableProperty]
private string _title = "Lieferungen - Elwig";
public Member? FilterMember { get; set; }
[ObservableProperty]
private string? _searchQuery = "";
public List<string> 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]

View File

@ -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">
<Window.DataContext>
<vm:AreaComAdminViewModel/>

View File

@ -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)