BaseDataWindow: implement client data saving
This commit is contained in:
@ -1,6 +1,8 @@
|
||||
using Elwig.Models;
|
||||
using Microsoft.Data.Sqlite;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Elwig.Helpers {
|
||||
public class ClientParameters {
|
||||
@ -24,8 +26,8 @@ namespace Elwig.Helpers {
|
||||
Ort = value.AtPlz.Ort.Name;
|
||||
}
|
||||
}
|
||||
public int Plz { get; private set; }
|
||||
public string Ort { get; private set; }
|
||||
public int Plz;
|
||||
public string Ort;
|
||||
public string Address;
|
||||
public string Sender1 => $"{NameShort} | {Address} | {Plz} {Ort}";
|
||||
public string Sender2;
|
||||
@ -73,7 +75,6 @@ namespace Elwig.Helpers {
|
||||
UstIdNr = 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"] ?? "");
|
||||
@ -81,10 +82,58 @@ namespace Elwig.Helpers {
|
||||
VatReduced = decimal.Parse((parameters["VAT_REDUCED"] ?? "").Replace(".", ","));
|
||||
VatFlatRate = decimal.Parse((parameters["VAT_FLATRATE"] ?? "").Replace(".", ","));
|
||||
|
||||
TextDeliveryNote = parameters.GetValueOrDefault("TEXT_DELIVERY_NOTE");
|
||||
Sender2 = parameters.GetValueOrDefault("DOCUMENT_SENDER") ?? "";
|
||||
TextDeliveryNote = parameters.GetValueOrDefault("TEXT_DELIVERYNOTE");
|
||||
} catch {
|
||||
throw new KeyNotFoundException();
|
||||
}
|
||||
}
|
||||
|
||||
private IEnumerable<(string, string?)> GetParamValues() {
|
||||
return new (string, string?)[] {
|
||||
("CLIENT_NAME_TOKEN", NameToken),
|
||||
("CLIENT_NAME_SHORT", NameShort),
|
||||
("CLIENT_NAME", Name),
|
||||
("CLIENT_NAME_SUFFIX", NameSuffix),
|
||||
("CLIENT_NAME_TYPE", NameType),
|
||||
("CLIENT_PLZ", Plz.ToString()),
|
||||
("CLIENT_ORT", Ort),
|
||||
("CLIENT_ADDRESS", Address),
|
||||
("CLIENT_PHONE", PhoneNr),
|
||||
("CLIENT_FAX", FaxNr),
|
||||
("CLIENT_EMAIL", EmailAddress),
|
||||
("CLIENT_WEBSITE", Website),
|
||||
("CLIENT_LFBISNR", LfbisNr),
|
||||
("CLIENT_USTIDNR", UstIdNr),
|
||||
("CLIENT_BIC", Bic),
|
||||
("CLIENT_IBAN", Iban),
|
||||
("DELIVERY_OBLIGATION", DeliveryObligation.ToString()),
|
||||
("DELIVERY_RIGHT", DeliveryRight.ToString()),
|
||||
("VAT_NORMAL", VatNormal.ToString().Replace(",", ".")),
|
||||
("VAT_REDUCED", VatReduced.ToString().Replace(",", ".")),
|
||||
("VAT_FLATRATE", VatFlatRate.ToString().Replace(",", ".")),
|
||||
("DOCUMENT_SENDER", Sender2),
|
||||
("TEXT_DELIVERYNOTE", TextDeliveryNote),
|
||||
};
|
||||
}
|
||||
|
||||
public async Task UpdateValues() {
|
||||
using var cnx = await AppDbContext.ConnectAsync();
|
||||
using var cmd = cnx.CreateCommand();
|
||||
var pv = GetParamValues();
|
||||
cmd.CommandText = "INSERT INTO client_parameter (param, value) VALUES " +
|
||||
string.Join(", ", pv.Select((pv, i) => $"(@p{i}, " + (pv.Item2 != null ? $"@v{i}" : "NULL") + ")")) +
|
||||
" ON CONFLICT DO UPDATE SET value = excluded.value";
|
||||
|
||||
int i = 0;
|
||||
foreach (var (p, v) in pv) {
|
||||
cmd.Parameters.Add(new SqliteParameter($"@p{i}", p));
|
||||
if (v != null)
|
||||
cmd.Parameters.Add(new SqliteParameter($"@v{i}", v));
|
||||
i++;
|
||||
}
|
||||
|
||||
await cmd.ExecuteNonQueryAsync();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user