diff --git a/Elwig/Helpers/AppDbContext.cs b/Elwig/Helpers/AppDbContext.cs index ec15c2b..57e791c 100644 --- a/Elwig/Helpers/AppDbContext.cs +++ b/Elwig/Helpers/AppDbContext.cs @@ -248,14 +248,6 @@ namespace Elwig.Helpers { return c + 1; } - public async Task GetWineQualityLevel(double kmw, string? maxQualId = null) { - return await WineQualityLevels - .Where(q => !q.IsPredicate && (q.MinKmw == null || q.MinKmw <= kmw)) - .Where(q => maxQualId == null || q.QualId == "WEI" || q.QualId == maxQualId) - .OrderBy(q => q.MinKmw) - .LastAsync(); - } - public void UpdateDeliveryPartModifiers(DeliveryPart part, IEnumerable oldModifiers, IEnumerable newModifiers) { foreach (var m in Modifiers.Where(m => m.Year == part.Year)) { var mod = new DeliveryPartModifier { diff --git a/Elwig/Windows/DeliveryAdminWindow.xaml.cs b/Elwig/Windows/DeliveryAdminWindow.xaml.cs index 7b11550..3e8ebc1 100644 --- a/Elwig/Windows/DeliveryAdminWindow.xaml.cs +++ b/Elwig/Windows/DeliveryAdminWindow.xaml.cs @@ -8,6 +8,7 @@ using Elwig.ViewModels; using Microsoft.EntityFrameworkCore; using Microsoft.Win32; using System; +using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Windows; @@ -34,6 +35,8 @@ namespace Elwig.Windows { private readonly Button[] WeighingButtons; + private List WineQualityLevels = []; + public DeliveryAdminWindow(bool receipt = false) { InitializeComponent(); CommandBindings.Add(new CommandBinding(CtrlF, FocusSearchInput)); @@ -483,7 +486,8 @@ namespace Elwig.Windows { var cultList = await ctx.WineCultivations.OrderBy(a => a.Name).Cast().ToListAsync(); cultList.Insert(0, new NullItem("")); ControlUtils.RenewItemsSource(CultivationInput, cultList, null, ControlUtils.RenewSourceDefault.First); - ControlUtils.RenewItemsSource(WineQualityLevelInput, await ctx.WineQualityLevels.ToListAsync()); + WineQualityLevels = await ctx.WineQualityLevels.ToListAsync(); + ControlUtils.RenewItemsSource(WineQualityLevelInput, WineQualityLevels); ControlUtils.RenewItemsSource(ModifiersInput, await ctx.Modifiers .Where(m => m.Year == y && (!IsCreating || m.IsActive)) .OrderBy(m => m.Ordering) @@ -1230,23 +1234,30 @@ namespace Elwig.Windows { } } + private WineQualLevel GetWineQualityLevel(double kmw, string? maxQualId = null) { + return WineQualityLevels + .Where(q => !q.IsPredicate && (q.MinKmw == null || q.MinKmw <= kmw)) + .Where(q => maxQualId == null || q.QualId == "WEI" || q.QualId == maxQualId) + .OrderBy(q => q.MinKmw) + .Last(); + } + private void UpdateWineQualityLevels() { - using var ctx = new AppDbContext(); if (!GetInputValid(GradationKmwInput)) { UnsetDefaultValue(WineQualityLevelInput); ComboBox_SelectionChanged(WineQualityLevelInput, null); - WineQualityLevelInput.ItemsSource = ctx.WineQualityLevels.ToList(); + WineQualityLevelInput.ItemsSource = WineQualityLevels; WineQualityLevelInput.SelectedItem = null; return; } var kmw = (double)ViewModel.GradationKmw!; var max = ViewModel.WineVar?.MaxQualId; var quw = ViewModel.WineVar?.IsQuw ?? true; - WineQualityLevelInput.ItemsSource = ctx.WineQualityLevels + WineQualityLevelInput.ItemsSource = WineQualityLevels .Where(q => q.MinKmw == null || q.MinKmw <= kmw) .Where(q => quw || q.QualId == "WEI" || q.QualId == max) .ToList(); - var qual = ctx.GetWineQualityLevel(kmw, !quw ? max : null).GetAwaiter().GetResult(); + var qual = GetWineQualityLevel(kmw, !quw ? max : null); SetDefaultValue(WineQualityLevelInput, qual); if (WineQualityLevelInput.SelectedItem == null || (WineQualityLevelInput.SelectedItem is WineQualLevel selected && !selected.IsPredicate)) { ControlUtils.SelectItem(WineQualityLevelInput, qual); @@ -1386,8 +1397,7 @@ namespace Elwig.Windows { AbgewertetInput.IsChecked = false; return; } - using var ctx = new AppDbContext(); - var defQual = ctx.GetWineQualityLevel(ViewModel.GradationKmw!.Value, !(ViewModel.WineVar?.IsQuw ?? true) ? ViewModel.WineVar?.MaxQualId : null).GetAwaiter().GetResult(); + var defQual = GetWineQualityLevel(ViewModel.GradationKmw!.Value, !(ViewModel.WineVar?.IsQuw ?? true) ? ViewModel.WineVar?.MaxQualId : null); AbgewertetInput.IsChecked = !qual.IsPredicate && defQual != qual; }