diff --git a/Elwig/Windows/ChartWindow.xaml.cs b/Elwig/Windows/ChartWindow.xaml.cs index 111db6f..1f2e2ff 100644 --- a/Elwig/Windows/ChartWindow.xaml.cs +++ b/Elwig/Windows/ChartWindow.xaml.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Drawing; using System.Linq; +using System.Text.Json; using System.Text.Json.Nodes; using System.Threading.Tasks; using System.Windows; @@ -45,9 +46,9 @@ namespace Elwig.Windows { AvNr = avnr; var v = Context.PaymentVariants.Find(year, avnr); Title = $"{v?.Name} - Lese {year} - Elwig"; - ExemptInputs = new Control[] { + ExemptInputs = [ GraphList, OechsleInput, PriceInput, FreeZoomInput, GradationLinesInput, TooltipInput - }; + ]; } private void Window_Loaded(object sender, RoutedEventArgs evt) { @@ -60,15 +61,19 @@ namespace Elwig.Windows { await RefreshGraphListQuery(); } - private async Task RefreshGraphListQuery(bool updateSort = false) { - List paymentVars = await Context.PaymentVariants.Where(p => p.Year == Year && p.AvNr == AvNr).ToListAsync(); - - if (paymentVars.Count != 1) { - return; + private static JsonObject? ParseData(PaymentVar variant) { + try { + return JsonNode.Parse(variant.Data)?.AsObject(); + } catch (JsonException) { + return null; } + } - PaymentVar paymentVar = paymentVars[0]; - var data = JsonNode.Parse(paymentVar.Data).AsObject(); + private async Task RefreshGraphListQuery(bool updateSort = false) { + var paymentVar = await Context.PaymentVariants.FindAsync(Year, AvNr); + if (paymentVar == null) return; + var data = ParseData(paymentVar); + if (data == null) return; var auszahlungsSorten = data["AuszahlungSorten"]?.AsObject(); if (auszahlungsSorten == null) { @@ -81,7 +86,7 @@ namespace Elwig.Windows { return; } - List GraphsList = new(); + List GraphsList = []; int i = 1; foreach (var graph in Graphs) { @@ -97,8 +102,8 @@ namespace Elwig.Windows { RefreshInputs(); } - private String ParseContracts(JsonObject auszahlungsSorten, int num) { - List contracts = new(); + private string ParseContracts(JsonObject auszahlungsSorten, int num) { + List contracts = []; foreach (var sorte in auszahlungsSorten) { if (sorte.Key == "Kurven") continue; @@ -111,18 +116,14 @@ namespace Elwig.Windows { } } - return string.Join("\n", contracts.ToArray()); + return string.Join("\n", contracts); } private async Task RemoveGraph(int num) { - List paymentVars = await Context.PaymentVariants.Where(p => p.Year == Year && p.AvNr == AvNr).ToListAsync(); - - if (paymentVars.Count != 1) { - return false; - } - - PaymentVar paymentVar = paymentVars[0]; - var data = JsonNode.Parse(paymentVar.Data).AsObject(); + var paymentVar = await Context.PaymentVariants.FindAsync(Year, AvNr); + if (paymentVar == null) return false; + var data = ParseData(paymentVar); + if (data == null) return false; var auszahlungsSorten = data["AuszahlungSorten"]?.AsObject(); if (auszahlungsSorten == null) {