[#43] ChartWindow: Do not use Context from ContextWindow any more

This commit is contained in:
2024-03-11 10:32:54 +01:00
parent 0c63e315bb
commit 4e2c087260

View File

@ -74,8 +74,9 @@ namespace Elwig.Windows {
InitializeComponent(); InitializeComponent();
Year = year; Year = year;
AvNr = avnr; AvNr = avnr;
Season = Context.Seasons.Find(year) ?? throw new ArgumentException("Season not found"); using var ctx = new AppDbContext();
PaymentVar = Context.PaymentVariants.Find(year, avnr) ?? throw new ArgumentException("PaymentVar not found"); 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"; Title = $"{PaymentVar?.Name} - Lese {year} - Elwig";
LockContext = true; LockContext = true;
} }
@ -100,15 +101,16 @@ namespace Elwig.Windows {
} }
private async Task RefreshGraphList() { private async Task RefreshGraphList() {
PaymentVar = await Context.PaymentVariants.FindAsync(Year, AvNr) ?? throw new ArgumentException("PaymentVar not found"); using var ctx = new AppDbContext();
Season = await Context.Seasons.FindAsync(Year) ?? throw new ArgumentException("Season not found"); 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 { try {
var data = EditBillingData.FromJson(PaymentVar.Data, Utils.GetVaributes(Context, Year)); var data = EditBillingData.FromJson(PaymentVar.Data, Utils.GetVaributes(ctx, Year));
var paymentEntries = data.GetPaymentGraphEntries(Context, Season); var paymentEntries = data.GetPaymentGraphEntries(ctx, Season);
GraphEntries = [ GraphEntries = [
..paymentEntries, ..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) { } catch (KeyNotFoundException ex) {
var key = ex.Message.Split('\'')[1].Split('\'')[0]; 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", MessageBox.Show("Fehler beim Laden der Auszahlungsvariante:\n\n" + ex.Message, "Fehler",
MessageBoxButton.OK, MessageBoxImage.Error); MessageBoxButton.OK, MessageBoxImage.Error);
} }
Vaributes = Utils.GetVaributeList(Context, Year); Vaributes = Utils.GetVaributeList(ctx, Year);
GraphEntries.ForEach(e => { GraphEntries.ForEach(e => {
e.Vaributes.ForEach(v => { 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); 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; PrimaryMarkedPoint = Highlighted.Index;
if (ActiveGraph != Highlighted.Graph) ChangeActiveGraph(Highlighted.Graph); 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(); PriceInput.Text = Highlighted.Graph.GetPriceAt(Highlighted.Index).ToString();
EnableActionButtons(); EnableActionButtons();
@ -643,20 +645,18 @@ namespace Elwig.Windows {
} }
private async void SaveButton_Click(object sender, RoutedEventArgs e) { 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<PaymentVar>? tr = null;
try { 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(); PaymentVar.Data = data.ToJsonString();
tr = Context.Update(PaymentVar); ctx.Update(PaymentVar);
await Context.SaveChangesAsync(); await ctx.SaveChangesAsync();
LockContext = false; LockContext = false;
tr = null;
await App.HintContextChange(); await App.HintContextChange();
} catch (Exception exc) { } catch (Exception exc) {
if (tr != null) await tr.ReloadAsync();
var str = "Der Eintrag konnte nicht in der Datenbank gespeichert werden!\n\n" + exc.Message; 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; if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
MessageBox.Show(str, "Auszahlungsvariante speichern", MessageBoxButton.OK, MessageBoxImage.Error); MessageBox.Show(str, "Auszahlungsvariante speichern", MessageBoxButton.OK, MessageBoxImage.Error);