diff --git a/Elwig/Services/DeliveryAncmtService.cs b/Elwig/Services/DeliveryAncmtService.cs index d07410e..ad5350a 100644 --- a/Elwig/Services/DeliveryAncmtService.cs +++ b/Elwig/Services/DeliveryAncmtService.cs @@ -46,7 +46,7 @@ namespace Elwig.Services { deliveryAncmtQuery = deliveryAncmtQuery.Where(a => a.Year == s.Year && a.DsNr == s.DsNr); filterNames.Add($"{s.Date:dd.MM.yyyy} – {s.Branch.Name} – {s.Description}"); } else { - deliveryAncmtQuery = deliveryAncmtQuery.Where(a => a.Year == vm.FilterSeason); + deliveryAncmtQuery = deliveryAncmtQuery.Where(a => a.Year == vm.FilterSeason && (!vm.FilterOnlyUpcoming || a.Schedule.DateString.CompareTo(Utils.Today.ToString("yyyy-MM-dd")) >= 0)); filterNames.Add($"{vm.FilterSeason}"); } diff --git a/Elwig/ViewModels/DeliveryAncmtAdminViewModel.cs b/Elwig/ViewModels/DeliveryAncmtAdminViewModel.cs index 9aecb7d..c9ea9b0 100644 --- a/Elwig/ViewModels/DeliveryAncmtAdminViewModel.cs +++ b/Elwig/ViewModels/DeliveryAncmtAdminViewModel.cs @@ -14,6 +14,8 @@ namespace Elwig.ViewModels { [ObservableProperty] private bool _filterOnlyUpcoming; [ObservableProperty] + private bool _filterFromAllSchedules; + [ObservableProperty] private string? _filterSeasonString; public int? FilterSeason { get => int.TryParse(FilterSeasonString, out var year) ? year : null; diff --git a/Elwig/Windows/DeliveryAncmtAdminWindow.xaml b/Elwig/Windows/DeliveryAncmtAdminWindow.xaml index 600fcbd..a1d6246 100644 --- a/Elwig/Windows/DeliveryAncmtAdminWindow.xaml +++ b/Elwig/Windows/DeliveryAncmtAdminWindow.xaml @@ -81,7 +81,7 @@ - + @@ -94,7 +94,7 @@ @@ -111,11 +111,14 @@ + !ViewModel.FilterOnlyUpcoming || s.DateString.CompareTo(Utils.Today.ToString("yyyy-MM-dd")) >= 0) - .ToList(), DeliveryScheduleList_SelectionChanged, ControlUtils.RenewSourceDefault.First); + .ToList(), DeliveryScheduleList_SelectionChanged, ViewModel.FilterFromAllSchedules ? ControlUtils.RenewSourceDefault.None : ControlUtils.RenewSourceDefault.First); ControlUtils.RenewItemsSource(DeliveryScheduleInput, deliverySchedules, DeliveryScheduleInput_SelectionChanged); } @@ -187,11 +187,13 @@ namespace Elwig.Windows { Menu_DeliveryAncmtList_ShowSelected.IsEnabled = !IsEditing && !IsCreating; Menu_DeliveryAncmtList_SavePdfSelected.IsEnabled = !IsEditing && !IsCreating; Menu_DeliveryAncmtList_PrintSelected.IsEnabled = !IsEditing && !IsCreating; + ViewModel.FilterFromAllSchedules = false; } else { Menu_DeliveryAncmtList_SaveSelected.IsEnabled = false; Menu_DeliveryAncmtList_ShowSelected.IsEnabled = false; Menu_DeliveryAncmtList_SavePdfSelected.IsEnabled = false; Menu_DeliveryAncmtList_PrintSelected.IsEnabled = false; + ViewModel.FilterFromAllSchedules = true; } } @@ -201,6 +203,16 @@ namespace Elwig.Windows { private async void OnlyUpcomingInput_Changed(object sender, RoutedEventArgs evt) { await RefreshDeliveryScheduleList(); + await RefreshList(true); + } + + private async void FromAllSchedulesInput_Changed(object sender, RoutedEventArgs evt) { + if (ViewModel.FilterFromAllSchedules) { + DeliveryScheduleList.SelectedItem = null; + } else if (DeliveryScheduleList.SelectedItem == null) { + ViewModel.FilterFromAllSchedules = true; + } + await RefreshList(true); } private async void SearchInput_TextChanged(object sender, TextChangedEventArgs evt) { @@ -243,6 +255,7 @@ namespace Elwig.Windows { private async void NewDeliveryAncmtButton_Click(object? sender, RoutedEventArgs? evt) { IsCreating = true; DeliveryAncmtList.IsEnabled = false; + var mgnr = ViewModel.MgNr; ViewModel.SelectedDeliveryAncmt = null; using var ctx = new AppDbContext(); @@ -259,6 +272,7 @@ namespace Elwig.Windows { ShowSaveResetCancelButtons(); UnlockInputs(); InitInputs(); + ViewModel.MgNr = mgnr; ViewModel.EnableSearchInputs = false; } @@ -337,6 +351,7 @@ namespace Elwig.Windows { await RefreshList(); await RefreshInputs(); ViewModel.SearchQuery = ""; + ControlUtils.SelectItemWithPk(DeliveryScheduleList, year, dsnr); if (sortid != null) ControlUtils.SelectItemWithPk(DeliveryAncmtList, year, dsnr, mgnr, sortid); }