From 258b2b3c5be4fbe4e08a951e0167a822c9d6007e Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner Date: Thu, 17 Aug 2023 16:30:47 +0200 Subject: [PATCH] Make document footer more dynamic --- Elwig/Documents/Document.cshtml.cs | 11 +++++---- Elwig/Helpers/Utils.cs | 39 ++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 5 deletions(-) diff --git a/Elwig/Documents/Document.cshtml.cs b/Elwig/Documents/Document.cshtml.cs index 853f78c..26f02c8 100644 --- a/Elwig/Documents/Document.cshtml.cs +++ b/Elwig/Documents/Document.cshtml.cs @@ -14,11 +14,12 @@ namespace Elwig.Documents { CurrentNextSeason = Utils.CurrentNextSeason; Title = title; Header = $"

{c.Name}

"; - Footer = $"{c.NameFull}
" + - $"{c.Address} \u00b7 {c.Plz} {c.Ort} \u00b7 Österreich \u00b7 " + - $"Tel.: {c.PhoneNr} \u00b7 Fax: {c.FaxNr}
{c.EmailAddress} \u00b7 {c.Website} \u00b7 " + - $"Betriebs-Nr.: {c.LfbisNr} \u00b7 UID: {c.UstId}
" + - $"BIC: {c.Bic} \u00b7 IBAN: {c.Iban}"; + Footer = Utils.GenerateFooter("
", " \u00b7 ") + .Item(c.NameFull).NextLine() + .Item(c.Address).Item($"{c.Plz} {c.Ort}").Item("Österreich").Item("Tel.", c.PhoneNr).Item("Fax", c.FaxNr).NextLine() + .Item(c.EmailAddress).Item(c.Website).Item("Betriebs-Nr.", c.LfbisNr).Item("UID", c.UstId).NextLine() + .Item("BIC", c.Bic).Item("IBAN", c.Iban) + .ToString(); Date = DateTime.Today; } diff --git a/Elwig/Helpers/Utils.cs b/Elwig/Helpers/Utils.cs index cb3b185..3e900b6 100644 --- a/Elwig/Helpers/Utils.cs +++ b/Elwig/Helpers/Utils.cs @@ -195,5 +195,44 @@ namespace Elwig.Helpers { var d = new ManualWeighingDialog(); return d.ShowDialog() == true ? (d.Weight, d.Reason) : null; } + + public static Footer GenerateFooter(string lineBreak, string seperator) { + return new Footer(lineBreak, seperator); + } + + public class Footer { + private string Text = ""; + private readonly string LineBreak; + private readonly string Seperator; + private bool FirstLine = true; + private bool FirstItemInLine = true; + + public Footer(string lineBreak, string seperator) { + LineBreak = lineBreak; + Seperator = seperator; + } + + public Footer Item(string? text) { + if (text == null) return this; + Text += FirstItemInLine ? (FirstLine ? "" : LineBreak) : Seperator; + Text += text; + FirstLine = false; + FirstItemInLine = false; + return this; + } + + public Footer Item(string name, string? text) { + return text == null ? this : Item($"{name}: {text}"); + } + + public Footer NextLine() { + FirstItemInLine = true; + return this; + } + + public override string ToString() { + return Text; + } + } } }