From 3ab2b8a8dc9ab6a1dba1c1195d8dca0ba22bbd92 Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner Date: Thu, 17 Aug 2023 16:39:05 +0200 Subject: [PATCH] Load client parameters from database --- Elwig/App.xaml.cs | 10 ++++- Elwig/Helpers/ClientParameters.cs | 70 +++++++++++++++++++------------ 2 files changed, 51 insertions(+), 29 deletions(-) diff --git a/Elwig/App.xaml.cs b/Elwig/App.xaml.cs index 301449a..ddda1b7 100644 --- a/Elwig/App.xaml.cs +++ b/Elwig/App.xaml.cs @@ -61,15 +61,21 @@ namespace Elwig { if (!ctx.Database.CanConnect()) { MessageBox.Show($"Invalid Database:\n\n{Config.DatabaseFile}", "Invalid Database", MessageBoxButton.OK, MessageBoxImage.Error); Shutdown(); + return; } else { branches = ctx.Branches.ToDictionary(b => b.Name.ToLower(), b => (b.ZwstId, b.Name, b.PostalDest?.AtPlz?.Plz, b.PostalDest?.AtPlz?.Dest, b.Address, b.PhoneNr, b.FaxNr, b.MobileNr)); + try { + Client = new(ctx); + } catch (Exception e) { + MessageBox.Show($"Fehler beim Laden der Mandantendaten:\n\n{e.Message}", "Fehler"); + Shutdown(); + return; + } } } Utils.RunBackground("HTML Initialization", () => Documents.Html.Init(PrintingReadyChanged)); Utils.RunBackground("PDF Initialization", () => Documents.Pdf.Init(PrintingReadyChanged)); - Client = new(); - var list = new List(); foreach (var s in Config.Scales) { try { diff --git a/Elwig/Helpers/ClientParameters.cs b/Elwig/Helpers/ClientParameters.cs index 24c90b7..958baac 100644 --- a/Elwig/Helpers/ClientParameters.cs +++ b/Elwig/Helpers/ClientParameters.cs @@ -1,4 +1,6 @@ using Elwig.Models; +using System.Collections.Generic; +using System.Linq; namespace Elwig.Helpers { public class ClientParameters { @@ -9,8 +11,9 @@ namespace Elwig.Helpers { public string NameShort; public string NameShortened; public string Name; - public string NameSuffix; - public string NameFull => $"{Name} {NameSuffix}"; + public string? NameSuffix; + public string NameType; + public string NameFull => NameSuffix == null ? $"{Name} {NameType}" : $"{Name}, {NameSuffix}, {NameType}"; public Type? Client; public PostalDest PostalDest { @@ -35,33 +38,46 @@ namespace Elwig.Helpers { public string? EmailAddress; public string? Website; + public int DeliveryObligation; + public int DeliveryRight; + public string? DeliveryNoteText; - public ClientParameters() { - NameToken = "WGM"; - NameShort = "WG Matzen"; - NameShortened = "Winzergenossenschaft f. Matzen u. Umgebung"; - Name = "Winzergenossenschaft für Matzen und Umgebung"; - NameSuffix = "reg. Gen.m.b.H."; - Client = Type.Matzen; - Plz = 2243; - Ort = "Matzen"; - Address = "Schloßstraße 6"; - PhoneNr = "+43 2289 2221"; - FaxNr = "+43 2289 2221"; - EmailAddress = "winzermatzen@aon.at"; - Website = "winzermatzen.at"; - LfbisNr = "0901768"; - UstId = "ATU16328105"; - Bic = "RLNWATWWGAE"; - Iban = "AT92 3209 2000 0240 0075"; - Sender2 = "E Österreichische Post AG Eco Brief"; - DeliveryNoteText = "Das Mitglied erklärt, dass die gelieferte Ware dem österreichischen Weingesetz entspricht und insbesondere die " + - "Bestimmungen über die Mengenbeschränkungen sowie für die Erzeugung von Wein besonderer Leseart eingehalten wird. " + - "Alle maßgeblichen Veränderungen obiger Angaben sind der Winzergenossenschaft unverzüglich zu melden. " + - "Das Mitglied bestätigt weiters mit seiner Unterschrift, dass die gelieferten Trauben entsprechend der guten Herstellungspraxis erzeugt wurden, " + - "insbesondere die Einhaltung der vom Hersteller vorgegebenen Wartefristen für Pflanzenschutzmittel. " + - "Weiters wird bestätigt, dass die Datenschutzerklärung der Winzergenossenschaft für Matzen und Umgebung in der Übernahmestelle zur freien Entnahme aufliegt."; + public ClientParameters(AppDbContext ctx) : this(ctx.ClientParameters.ToDictionary(e => e.Param, e => e.Value)) { } + + public ClientParameters(Dictionary parameters) { + try { + NameToken = parameters["CLIENT_NAME_TOKEN"] ?? throw new KeyNotFoundException(); + NameShort = parameters["CLIENT_NAME_SHORT"] ?? throw new KeyNotFoundException(); + Name = parameters["CLIENT_NAME"] ?? throw new KeyNotFoundException(); + NameShortened = parameters["CLIENT_NAME_SHORTENED"] ?? Name; + NameSuffix = parameters.GetValueOrDefault("CLIENT_NAME_SUFFIX"); + NameType = parameters["CLIENT_NAME_TYPE"] ?? throw new KeyNotFoundException(); + switch (Name) { + case "Winzergenossenschaft für Matzen und Umgebung": Client = Type.Matzen; break; + case "Winzerkeller im Weinviertel": Client = Type.GWK; break; + }; + + Plz = int.Parse(parameters["CLIENT_PLZ"] ?? ""); + Ort = parameters["CLIENT_ORT"] ?? throw new KeyNotFoundException(); + Address = parameters["CLIENT_ADDRESS"] ?? throw new KeyNotFoundException(); + PhoneNr = parameters.GetValueOrDefault("CLIENT_PHONE"); + FaxNr = parameters.GetValueOrDefault("CLIENT_FAX"); + EmailAddress = parameters.GetValueOrDefault("CLIENT_EMAIL"); + Website = parameters.GetValueOrDefault("CLIENT_WEBSITE"); + LfbisNr = parameters.GetValueOrDefault("CLIENT_LFBISNR"); + UstId = parameters.GetValueOrDefault("CLIENT_USTIDNR"); + Bic = parameters.GetValueOrDefault("CLIENT_BIC"); + Iban = parameters.GetValueOrDefault("CLIENT_IBAN"); + Sender2 = parameters.GetValueOrDefault("DOCUMENT_SENDER") ?? ""; + + DeliveryObligation = int.Parse(parameters["DELIVERY_OBLIGATION"] ?? ""); + DeliveryRight = int.Parse(parameters["DELIVERY_RIGHT"] ?? ""); + + DeliveryNoteText = parameters.GetValueOrDefault("DELIVERY_NOTE_TEXT"); + } catch { + throw new KeyNotFoundException(); + } } } }