Billing: Build BillingData-Json in BillingData instead of anywhere else

This commit is contained in:
2024-01-21 00:31:20 +01:00
parent b981b5f895
commit a2bb09cfbd
5 changed files with 106 additions and 101 deletions

View File

@ -2,7 +2,6 @@ using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text.Json.Nodes;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
@ -26,7 +25,7 @@ namespace Elwig.Windows {
public readonly int Year;
public readonly int AvNr;
public readonly Season Season;
private readonly PaymentVar PaymentVar;
private PaymentVar PaymentVar;
private ScatterPlot DataPlot;
private ScatterPlot? GebundenPlot;
@ -66,6 +65,7 @@ namespace Elwig.Windows {
private async Task RefreshGraphList() {
await Context.PaymentVariants.LoadAsync();
PaymentVar = await Context.PaymentVariants.FindAsync(Year, AvNr) ?? throw new ArgumentException("PaymentVar not found");
var attrVariants = (await Context.DeliveryParts
.Where(d => d.Year == Year)
@ -497,7 +497,7 @@ namespace Elwig.Windows {
}
private void AddButton_Click(object sender, RoutedEventArgs e) {
GraphEntry newGraphEntry = new(GetMaxGraphId() + 1, Season, BillingData.CurveMode.Oe, MinOechsle, MinOechsleGebunden, MaxOechsle);
GraphEntry newGraphEntry = new(GetMaxGraphId() + 1, Season.Precision, BillingData.CurveMode.Oe, MinOechsle, MinOechsleGebunden, MaxOechsle);
GraphEntries.Add(newGraphEntry);
GraphList.Items.Refresh();
GraphList.SelectedItem = newGraphEntry;
@ -526,46 +526,23 @@ namespace Elwig.Windows {
}
private async void SaveButton_Click(object sender, RoutedEventArgs e) {
await SaveGraphs();
}
var origData = BillingData.FromJson(PaymentVar.Data);
var data = origData.FromGraphEntries(GraphEntries);
private async Task SaveGraphs() {
var payment = new JsonObject();
var curves = new JsonArray();
foreach (var entry in GraphEntries) {
curves.Add(entry.ToJson());
foreach (var contract in entry.Contracts) {
payment[$"{contract.Variety?.SortId}/{contract.Attribute?.AttrId}"] = $"curve:{entry.Id}";
}
}
var data = new JsonObject {
["mode"] = "elwig",
["version"] = 1,
["payment"] = payment,
["curves"] = curves
};
MessageBox.Show(data.ToJsonString());
/*
EntityEntry<PaymentVar>? tr = null;
try {
PaymentVar.Data = data.ToJsonString();
tr = Context.Update(PaymentVar);
await Context.SaveChangesAsync();
LockContext = false;
await App.HintContextChange();
await RefreshGraphList();
} 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, "Graph speichern", MessageBoxButton.OK, MessageBoxImage.Error);
MessageBox.Show(str, "Auszahlungsvariante speichern", MessageBoxButton.OK, MessageBoxImage.Error);
}
*/
LockContext = true;
}
private void EnableUnitTextBox(UnitTextBox u) {