diff --git a/Elwig/Windows/ChartWindow.xaml.cs b/Elwig/Windows/ChartWindow.xaml.cs index f978412..cdbe960 100644 --- a/Elwig/Windows/ChartWindow.xaml.cs +++ b/Elwig/Windows/ChartWindow.xaml.cs @@ -74,8 +74,9 @@ namespace Elwig.Windows { InitializeComponent(); Year = year; AvNr = avnr; - Season = Context.Seasons.Find(year) ?? throw new ArgumentException("Season not found"); - PaymentVar = Context.PaymentVariants.Find(year, avnr) ?? throw new ArgumentException("PaymentVar not found"); + using var ctx = new AppDbContext(); + Season = ctx.Seasons.Find(year) ?? throw new ArgumentException("Season not found"); + PaymentVar = ctx.PaymentVariants.Find(year, avnr) ?? throw new ArgumentException("PaymentVar not found"); Title = $"{PaymentVar?.Name} - Lese {year} - Elwig"; LockContext = true; } @@ -100,15 +101,16 @@ namespace Elwig.Windows { } private async Task RefreshGraphList() { - PaymentVar = await Context.PaymentVariants.FindAsync(Year, AvNr) ?? throw new ArgumentException("PaymentVar not found"); - Season = await Context.Seasons.FindAsync(Year) ?? throw new ArgumentException("Season not found"); + using var ctx = new AppDbContext(); + PaymentVar = await ctx.PaymentVariants.FindAsync(Year, AvNr) ?? throw new ArgumentException("PaymentVar not found"); + Season = await ctx.Seasons.FindAsync(Year) ?? throw new ArgumentException("Season not found"); try { - var data = EditBillingData.FromJson(PaymentVar.Data, Utils.GetVaributes(Context, Year)); - var paymentEntries = data.GetPaymentGraphEntries(Context, Season); + var data = EditBillingData.FromJson(PaymentVar.Data, Utils.GetVaributes(ctx, Year)); + var paymentEntries = data.GetPaymentGraphEntries(ctx, Season); GraphEntries = [ ..paymentEntries, - ..data.GetQualityGraphEntries(Context, Season, paymentEntries.Any() ? paymentEntries.Max(e => e.Id) : 0) + ..data.GetQualityGraphEntries(ctx, Season, paymentEntries.Any() ? paymentEntries.Max(e => e.Id) : 0) ]; } catch (KeyNotFoundException ex) { var key = ex.Message.Split('\'')[1].Split('\'')[0]; @@ -123,7 +125,7 @@ namespace Elwig.Windows { MessageBox.Show("Fehler beim Laden der Auszahlungsvariante:\n\n" + ex.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error); } - Vaributes = Utils.GetVaributeList(Context, Year); + Vaributes = Utils.GetVaributeList(ctx, Year); GraphEntries.ForEach(e => { e.Vaributes.ForEach(v => { var found = Vaributes.Find(a => a.Variety?.SortId == v.Variety?.SortId && a.Attribute?.AttrId == v.Attribute?.AttrId && a.Cultivation?.CultId == v.Cultivation?.CultId); @@ -505,9 +507,9 @@ namespace Elwig.Windows { PrimaryMarkedPoint = Highlighted.Index; if (ActiveGraph != Highlighted.Graph) ChangeActiveGraph(Highlighted.Graph); - ChangeMarker(PrimaryMarkedPointPlot, true, ActiveGraph.GetOechsleAt(PrimaryMarkedPoint), ActiveGraph.GetPriceAt(PrimaryMarkedPoint)); + ChangeMarker(PrimaryMarkedPointPlot, true, ActiveGraph!.GetOechsleAt(PrimaryMarkedPoint), ActiveGraph.GetPriceAt(PrimaryMarkedPoint)); - OechsleInput.Text = Highlighted.Graph.GetOechsleAt(Highlighted.Index).ToString(); + OechsleInput.Text = Highlighted.Graph!.GetOechsleAt(Highlighted.Index).ToString(); PriceInput.Text = Highlighted.Graph.GetPriceAt(Highlighted.Index).ToString(); EnableActionButtons(); @@ -643,20 +645,18 @@ namespace Elwig.Windows { } private async void SaveButton_Click(object sender, RoutedEventArgs e) { - var origData = BillingData.FromJson(PaymentVar.Data); - var data = BillingData.FromGraphEntries(GraphEntries, origData, Utils.GetVaributes(Context, Year), - AllVaributesAssigned, AllVaributesAssignedAbgew); - - EntityEntry? tr = null; try { + using var ctx = new AppDbContext(); + var origData = BillingData.FromJson(PaymentVar.Data); + var data = BillingData.FromGraphEntries(GraphEntries, origData, Utils.GetVaributes(ctx, Year), + AllVaributesAssigned, AllVaributesAssignedAbgew); + PaymentVar.Data = data.ToJsonString(); - tr = Context.Update(PaymentVar); - await Context.SaveChangesAsync(); + ctx.Update(PaymentVar); + await ctx.SaveChangesAsync(); LockContext = false; - tr = null; await App.HintContextChange(); } catch (Exception exc) { - if (tr != null) await tr.ReloadAsync(); var str = "Der Eintrag konnte nicht in der Datenbank gespeichert werden!\n\n" + exc.Message; if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message; MessageBox.Show(str, "Auszahlungsvariante speichern", MessageBoxButton.OK, MessageBoxImage.Error);