diff --git a/Tasks/AddressCreation.cs b/Tasks/AddressCreation.cs
index 56b9426..64c2fb1 100644
--- a/Tasks/AddressCreation.cs
+++ b/Tasks/AddressCreation.cs
@@ -1,24 +1,23 @@
using System;
using System.Linq;
-using System.Runtime.InteropServices.JavaScript;
namespace Logof_Client;
public static class AddressCreator
{
///
- /// Creates max-seven-lines-long markdown address-string. Analyzes the KasPerson-Instance to find the best result.
+ /// Creates max-seven-lines-long Markdown address-string. Analyzes the KasPerson-Instance to find the best result.
///
/// KasPerson-ID
- /// A markdown string with the address that is maximum seven lines long
+ /// A Markdown string with the address that is maximum seven lines long
public static string? CreateFinalMarkdownString2(int refsid)
{
// Maximum seven lines of information
-
+
// find the address
- KasPerson address = new KasPerson();
- string string_address = "";
- int address_line_count = 0;
+ var address = new KasPerson();
+ var string_address = "";
+ var address_line_count = 0;
foreach (var set in Settings._instance.addressSets.addresses)
{
var temp = set.KasPersons.FirstOrDefault(obj => obj.refsid == refsid);
@@ -26,34 +25,32 @@ public static class AddressCreator
}
// no address found
- if (address == null)
- {
- return null;
- }
-
+ if (address == null) return null;
+
// let's get started: the name (and anrede), block-line-count: 1
if (!string.IsNullOrEmpty(address.anrede))
{
- if(address.anrede == "Herr") string_address += "Herrn";
+ if (address.anrede == "Herr") string_address += "Herrn";
else string_address += address.anrede;
address_line_count++;
}
+
if (!string.IsNullOrEmpty(address.name) && !string.IsNullOrEmpty(address.vorname))
{
string_address += " " + address.vorname + " " + address.name;
- } else if (!string.IsNullOrEmpty(address.name))
+ }
+ else if (!string.IsNullOrEmpty(address.name))
{
-
}
else // Anrede but no name? to the trash!
{
string_address = "";
address_line_count = 0;
}
-
+
return "Hier könnte eine\nAdresse stehen";
}
-
+
//+++ Aufbau +++
//
// Von unten anfangen, max. 7 Zeilen
@@ -83,20 +80,20 @@ public static class AddressCreator
// Auswurf PDF mit normalen Absender
//
// Auswurf PDF mit PvSt.
-
+
///
- /// Creates max-seven-lines-long markdown address-string. Analyzes the KasPerson-Instance to find the best result.
+ /// Creates max-seven-lines-long Markdown address-string. Analyzes the KasPerson-Instance to find the best result.
///
/// KasPerson-ID
- /// A markdown string with the address that is maximum seven lines long
+ /// A Markdown string with the address that is maximum seven lines long
public static string? CreateFinalMarkdownString(int refsid)
{
// Maximum seven lines of information
-
+
// find the address
- KasPerson address = new KasPerson();
- string string_address = "";
- int address_line_count = 0;
+ var address = new KasPerson();
+ var string_address = "";
+ var address_line_count = 0;
foreach (var set in Settings._instance.addressSets.addresses)
{
var temp = set.KasPersons.FirstOrDefault(obj => obj.refsid == refsid);
@@ -104,20 +101,19 @@ public static class AddressCreator
}
// no address found
- if (address == null)
- {
- return null;
- }
-
+ if (address == null) return null;
+
// let's get started: we start from the bottom
// if the country is not germany, set it
// LAND: GER oder DE
- if (address.land.ToLower().Trim() != "germany" && address.land.ToLower().Trim() != "ger" && address.land.ToLower().Trim() != "" && address.land.ToLower().Trim() != "de" && address.land.ToLower().Trim() != "deutschland")
+ if (address.land.ToLower().Trim() != "germany" && address.land.ToLower().Trim() != "ger" &&
+ address.land.ToLower().Trim() != "" && address.land.ToLower().Trim() != "de" &&
+ address.land.ToLower().Trim() != "deutschland")
{
string_address = "**" + address.land.Trim() + "**"; // Needs to be bold
address_line_count++;
}
-
+
// Alternative A: pplz valid and city existing
if (!string.IsNullOrEmpty(address.ort) && CheckPLZ(address.pplz, address.land))
{
@@ -134,21 +130,19 @@ public static class AddressCreator
address_line_count++;
}
- if (!string.IsNullOrWhiteSpace(address.anredzus))
+ var nameline = CreateNameLine(address.anredzus, address.anrede, address.titel, address.vorname,
+ address.adel, address.name, address.namezus);
+
+ if (string.IsNullOrWhiteSpace(nameline))
{
- string_address = address.anredzus.Trim() + " " + address.titel.Trim()+ " " + address.vorname.Trim()+ " " + address.adel.Trim() + " " + address.name.Trim()+ " (" + address.namezus.Trim() + ")\n" + string_address;
- address_line_count++;
- }
- else
- {
- string_address = address.anrede.Trim() + " " + address.titel.Trim()+ " " + address.vorname.Trim()+ " " + address.adel.Trim() + " " + address.name.Trim()+ " (" + address.namezus.Trim() + ")\n" + string_address;
+ string_address = nameline + string_address;
address_line_count++;
}
- string[] nameattribs = new[] { address.name1, address.name2, address.name3, address.name4, address.name5 };
+ var nameattribs = new[]
+ { address.name1, address.name2, address.name3, address.name4, address.name5, address.abteilung };
- for (int i = 0; i < nameattribs.Length-1; i++)
- {
+ for (var i = 0; i < nameattribs.Length - 1; i++)
if (address_line_count < 7)
{
if (!string.IsNullOrWhiteSpace(nameattribs[i]))
@@ -157,52 +151,100 @@ public static class AddressCreator
address_line_count++;
}
}
- else break;
- }
+ else
+ {
+ break;
+ }
} // Alternative B: plz valid and city existing
else if (!string.IsNullOrEmpty(address.ort) && CheckPLZ(address.plz, address.land))
{
-
- }
- else // Error-Handling?
- {
-
- }
-
+ string_address = address.plz + " " + address.ort + "\n" + string_address;
+ address_line_count++;
+ if (!string.IsNullOrWhiteSpace(address.strasse))
+ {
+ string_address = address.strasse.Trim() + "\n" + string_address;
+ address_line_count++;
+ }
+ else
+ {
+ string_address = address.postfach.Trim() + "\n" + string_address;
+ address_line_count++;
+ }
+
+ var nameline = CreateNameLine(address.anredzus, address.anrede, address.titel, address.vorname,
+ address.adel, address.name, address.namezus);
+
+ if (string.IsNullOrWhiteSpace(nameline))
+ {
+ string_address = nameline + string_address;
+ address_line_count++;
+ }
+
+ var nameattribs = new[]
+ { address.name1, address.name2, address.name3, address.name4, address.name5, address.abteilung };
+
+ for (var i = 0; i < nameattribs.Length - 1; i++)
+ if (address_line_count < 7)
+ {
+ if (!string.IsNullOrWhiteSpace(nameattribs[i]))
+ {
+ string_address += nameattribs[i] + "\n" + string_address;
+ address_line_count++;
+ }
+ }
+ else
+ {
+ break;
+ }
+ } // Error-Handling?
+
return string_address;
return "Hier könnte eine\nAdresse stehen";
}
+ public static string CreateNameLine(string anredezus, string anrede, string titel, string vorname, string adel,
+ string name, string namezus)
+ {
+ if (!string.IsNullOrWhiteSpace(anredezus))
+ return string.Join(" ",
+ new[] { anredezus, titel, vorname, adel, name }
+ .Where(s => !string.IsNullOrWhiteSpace(s))
+ )
+ + (string.IsNullOrWhiteSpace(namezus) ? "" : $" ({namezus.Trim()})")
+ + "\n";
+
+ // else
+ return string.Join(" ",
+ new[] { anrede, titel, vorname, adel, name }
+ .Where(s => !string.IsNullOrWhiteSpace(s))
+ )
+ + (string.IsNullOrWhiteSpace(namezus) ? "" : $" ({namezus.Trim()})")
+ + "\n";
+ }
+
///
- /// Returns true if a plz (or pplz) is valid
+ /// Returns true if a plz (or pplz) is valid
///
/// the plz itself
/// country, to check the plz
/// true or faslse, depending on result :+1:
public static bool CheckPLZ(string plz, string land)
{
- if (plz == null) return false;
- if (land.ToLower().Trim() != "germany" && land.ToLower().Trim() != "ger" && land.ToLower().Trim() != "" && land.ToLower().Trim() != "de" && land.ToLower().Trim() != "deutschland")
- {
- // if country is not germany... how should we check for a valid plz?
-
- // temporarily accept all of them
+ if (string.IsNullOrWhiteSpace(plz)) return false;
+
+ // For non-german countries, accept any non-empty postal code
+ if (land.ToLower().Trim() != "germany" && land.ToLower().Trim() != "ger" && land.ToLower().Trim() != "" &&
+ land.ToLower().Trim() != "de" && land.ToLower().Trim() != "deutschland")
return true;
- }
- try
+ // For Germany, check if it's a valid numeric postal code (5 digits)
+ if (int.TryParse(plz, out var iplz))
{
- int iplz = Convert.ToInt32(plz);
- if (iplz > 999999 || iplz < 10000)
- {
- return false;
- }
+ if (iplz > 99999 || iplz < 10000) return false;
return true;
-
- } catch
- {
- return false;
}
+ // If it can't be parsed as int, it's not a valid German postal code
+ return false;
}
}
\ No newline at end of file