diff --git a/Elwig/Helpers/Billing/BillingData.cs b/Elwig/Helpers/Billing/BillingData.cs index 80c83d5..94bc815 100644 --- a/Elwig/Helpers/Billing/BillingData.cs +++ b/Elwig/Helpers/Billing/BillingData.cs @@ -146,7 +146,12 @@ namespace Elwig.Helpers.Billing { return dict; } - protected static Dictionary GetSelection(JsonObject data, IEnumerable attributeVariants) { + protected static Dictionary GetSelection(JsonNode value, IEnumerable attributeVariants) { + if (value is JsonValue flatRate) { + return attributeVariants.ToDictionary(e => e, _ => flatRate); + } if (value is not JsonObject data) { + throw new InvalidOperationException(); + } Dictionary dict; if (data["default"] is JsonValue def) { dict = attributeVariants.ToDictionary(e => e, _ => def); diff --git a/Elwig/Helpers/Billing/PaymentBillingData.cs b/Elwig/Helpers/Billing/PaymentBillingData.cs index ec80cbd..0c1535d 100644 --- a/Elwig/Helpers/Billing/PaymentBillingData.cs +++ b/Elwig/Helpers/Billing/PaymentBillingData.cs @@ -25,17 +25,12 @@ namespace Elwig.Helpers.Billing { return new(ParseJson(json), attributeVariants); } - private Dictionary GetData(JsonObject data) { + private Dictionary GetData(JsonNode data) { return GetSelection(data, AttributeVariants).ToDictionary(e => e.Key, e => LookupCurve(e.Value)); } protected Dictionary GetPaymentData() { - var p = GetPaymentEntry(); - if (p is JsonValue val) { - var c = LookupCurve(val); - return AttributeVariants.ToDictionary(e => e, _ => c); - } - return GetData(p?.AsObject() ?? throw new InvalidOperationException()); + return GetData(GetPaymentEntry()); } protected Dictionary GetQualityData() { @@ -44,14 +39,7 @@ namespace Elwig.Helpers.Billing { if (q == null) return dict; foreach (var (qualid, data) in q) { - Dictionary qualDict; - if (data is JsonValue val) { - var c = LookupCurve(val); - qualDict = AttributeVariants.ToDictionary(e => e, _ => c); - } else { - qualDict = GetData(data?.AsObject() ?? throw new InvalidOperationException()); - } - foreach (var (idx, d) in qualDict) { + foreach (var (idx, d) in GetData(data ?? throw new InvalidOperationException())) { dict[$"{qualid}/{idx}"] = d; } }