BillingData: Implement WG Master parsing

This commit is contained in:
2024-01-08 19:31:13 +01:00
parent f894c3b212
commit 09e55264bb
3 changed files with 90 additions and 79 deletions

View File

@ -35,7 +35,7 @@ namespace Elwig.Helpers.Billing {
Data = data;
var mode = Data["mode"]?.GetValue<string>();
Mode = (mode == "elwig") ? CalculationMode.Elwig : CalculationMode.WgMaster;
Curves = GetCurves(data);
Curves = GetCurves(Data, Mode);
PaymentData = GetPaymentData(attributeVariants);
QualityData = GetQualityData(attributeVariants);
}
@ -83,9 +83,9 @@ namespace Elwig.Helpers.Billing {
return dict;
}
public static Dictionary<int, Curve> GetCurves(JsonObject data) {
public static Dictionary<int, Curve> GetCurves(JsonObject data, CalculationMode mode) {
var dict = new Dictionary<int, Curve>();
var curves = data["curves"]?.AsArray() ?? throw new InvalidOperationException();
var curves = data[mode == CalculationMode.Elwig ? "curves" : "Kurven"]?.AsArray() ?? throw new InvalidOperationException();
foreach (var c in curves) {
var obj = c?.AsObject() ?? throw new InvalidOperationException();
var id = obj["id"]?.GetValue<int>() ?? throw new InvalidOperationException();
@ -145,8 +145,7 @@ namespace Elwig.Helpers.Billing {
}
public Dictionary<string, Curve> GetPaymentData(IEnumerable<string> attributeVariants) {
// TODO parse wgmaster
var p = Data["payment"];
var p = Data[Mode == CalculationMode.Elwig ? "payment" : "AuszahlungSorten"];
if (p is JsonValue val) {
var c = LookupCurve(val);
return attributeVariants.ToDictionary(e => e, _ => c);
@ -155,8 +154,7 @@ namespace Elwig.Helpers.Billing {
}
public Dictionary<string, Curve> GetQualityData(IEnumerable<string> attributeVariants) {
// TODO parse wgmaster
var q = Data["quality"]?.AsObject();
var q = Data[Mode == CalculationMode.Elwig ? "quality" : "AuszahlungSortenQualitätsstufe"]?.AsObject();
Dictionary<string, Curve> dict = [];
if (q == null) return dict;