[chore:] logging for AddressCreation.cs
This commit is contained in:
+201
-173
@@ -43,177 +43,195 @@ public static class AddressCreator
|
|||||||
public static string? CreateFinalMarkdownString(int id)
|
public static string? CreateFinalMarkdownString(int id)
|
||||||
{
|
{
|
||||||
// Maximum seven lines of information
|
// Maximum seven lines of information
|
||||||
|
try
|
||||||
// find the address
|
|
||||||
KasPerson? address = null;
|
|
||||||
var string_address = "";
|
|
||||||
var address_line_count = 0;
|
|
||||||
foreach (var set in Settings._instance.addressSets.addresses)
|
|
||||||
{
|
{
|
||||||
var temp = set.KasPersons.FirstOrDefault(obj => obj.id == id);
|
// find the address
|
||||||
if (temp != null)
|
KasPerson? address = null;
|
||||||
{
|
var string_address = "";
|
||||||
address = temp;
|
var address_line_count = 0;
|
||||||
break;
|
foreach (var set in Settings._instance.addressSets.addresses)
|
||||||
}
|
{
|
||||||
}
|
var temp = set.KasPersons.FirstOrDefault(obj => obj.id == id);
|
||||||
|
if (temp != null)
|
||||||
// no address found
|
|
||||||
if (address == null) return null;
|
|
||||||
|
|
||||||
// let's get started: we start from the bottom
|
|
||||||
// if the country is not Germany, set it; try to map via Global countries alternatives -> translation
|
|
||||||
var trimmedLand = (address.land ?? "").Trim();
|
|
||||||
var trimmedLowerLand = trimmedLand.ToLower();
|
|
||||||
var isGermany = trimmedLowerLand == "germany" || trimmedLowerLand == "ger" ||
|
|
||||||
trimmedLowerLand == "" || trimmedLowerLand == "de" ||
|
|
||||||
trimmedLowerLand == "deutschland";
|
|
||||||
|
|
||||||
if (!isGermany)
|
|
||||||
{
|
|
||||||
var countryToShow = trimmedLand; // default: use raw land value
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(trimmedLand))
|
|
||||||
// search for matching country via alternatives using for-loops
|
|
||||||
for (var ci = 0; ci < Global._instance.countries.Count; ci++)
|
|
||||||
{
|
|
||||||
var country = Global._instance.countries[ci];
|
|
||||||
for (var ai = 0; ai < country.alternatives.Count; ai++)
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
var alt = (country.alternatives[ai] ?? "").Trim();
|
address = temp;
|
||||||
if (string.Equals(alt, trimmedLand, StringComparison.OrdinalIgnoreCase))
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// no address found
|
||||||
|
if (address == null) return null;
|
||||||
|
|
||||||
|
// let's get started: we start from the bottom
|
||||||
|
// if the country is not Germany, set it; try to map via Global countries alternatives -> translation
|
||||||
|
var trimmedLand = (address.land ?? "").Trim();
|
||||||
|
var trimmedLowerLand = trimmedLand.ToLower();
|
||||||
|
var isGermany = trimmedLowerLand == "germany" || trimmedLowerLand == "ger" ||
|
||||||
|
trimmedLowerLand == "" || trimmedLowerLand == "de" ||
|
||||||
|
trimmedLowerLand == "deutschland";
|
||||||
|
|
||||||
|
if (!isGermany)
|
||||||
|
{
|
||||||
|
var countryToShow = trimmedLand; // default: use raw land value
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(trimmedLand))
|
||||||
|
// search for matching country via alternatives using for-loops
|
||||||
|
for (var ci = 0; ci < Global._instance.countries.Count; ci++)
|
||||||
{
|
{
|
||||||
countryToShow = string.IsNullOrWhiteSpace(country.translation)
|
var country = Global._instance.countries[ci];
|
||||||
? country.name
|
for (var ai = 0; ai < country.alternatives.Count; ai++)
|
||||||
: country.translation;
|
try
|
||||||
goto CountryFound;
|
{
|
||||||
|
var alt = (country.alternatives[ai] ?? "").Trim();
|
||||||
|
if (string.Equals(alt, trimmedLand, StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
countryToShow = string.IsNullOrWhiteSpace(country.translation)
|
||||||
|
? country.name
|
||||||
|
: country.translation;
|
||||||
|
goto CountryFound;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
// ignore malformed alternative
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
// ignore malformed alternative
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
CountryFound:
|
CountryFound:
|
||||||
string_address = "**" + countryToShow + "**"; // Needs to be bold
|
string_address = "**" + countryToShow + "**"; // Needs to be bold
|
||||||
address_line_count++;
|
address_line_count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Alternative A: pplz valid and city existing
|
||||||
|
if (!string.IsNullOrEmpty(address.ort) && CheckPLZ(address.pplz, address.land))
|
||||||
|
{
|
||||||
|
string_address = address.pplz + " " + address.ort + "\n" + string_address;
|
||||||
|
address_line_count++;
|
||||||
|
if (!string.IsNullOrWhiteSpace(address.postfach))
|
||||||
|
{
|
||||||
|
string_address = "Postfach " + address.postfach.Trim() + "\n" + string_address;
|
||||||
|
address_line_count++;
|
||||||
|
}
|
||||||
|
else if (!string.IsNullOrWhiteSpace(address.strasse.Trim()))
|
||||||
|
{
|
||||||
|
string_address = address.strasse.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 + "\n" + string_address;
|
||||||
|
address_line_count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// REIHENFOLGE
|
||||||
|
var nameattribs = new[]
|
||||||
|
{ address.name1, address.name2, address.name3, address.name4, address.name5, address.abteilung };
|
||||||
|
|
||||||
|
var names = "";
|
||||||
|
for (var i = 0; i < nameattribs.Length; i++)
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (address_line_count >= 7) break;
|
||||||
|
if (!string.IsNullOrWhiteSpace(nameattribs[i]))
|
||||||
|
{
|
||||||
|
names += "\n" + nameattribs[i];
|
||||||
|
address_line_count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
Console.WriteLine("ERROR 15821");
|
||||||
|
}
|
||||||
|
|
||||||
|
string_address = names + "\n" + string_address;
|
||||||
|
} // Alternative B: plz valid and city existing
|
||||||
|
else if (!string.IsNullOrEmpty(address.ort) && CheckPLZ(address.plz, address.land))
|
||||||
|
{
|
||||||
|
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 if (!string.IsNullOrWhiteSpace(address.postfach.Trim()))
|
||||||
|
{
|
||||||
|
string_address = "Postfach " + 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 + "\n" + string_address;
|
||||||
|
address_line_count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
var nameattribs = new[]
|
||||||
|
{ address.name1, address.name2, address.name3, address.name4, address.name5, address.abteilung };
|
||||||
|
|
||||||
|
var names = "";
|
||||||
|
for (var i = 0; i < nameattribs.Length; i++)
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (address_line_count >= 7) break;
|
||||||
|
if (!string.IsNullOrWhiteSpace(nameattribs[i]))
|
||||||
|
{
|
||||||
|
names += "\n" + nameattribs[i];
|
||||||
|
address_line_count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
Console.WriteLine("ERROR 15821");
|
||||||
|
}
|
||||||
|
|
||||||
|
string_address = names + "\n" + string_address;
|
||||||
|
} // Error-Handling?
|
||||||
|
|
||||||
|
if (address_line_count > 1) return string_address;
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.Log($"Error while creating markdown string: {ex.Message}", Logger.LogType.Error);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Alternative A: pplz valid and city existing
|
|
||||||
if (!string.IsNullOrEmpty(address.ort) && CheckPLZ(address.pplz, address.land))
|
|
||||||
{
|
|
||||||
string_address = address.pplz + " " + address.ort + "\n" + string_address;
|
|
||||||
address_line_count++;
|
|
||||||
if (!string.IsNullOrWhiteSpace(address.postfach))
|
|
||||||
{
|
|
||||||
string_address = "Postfach " + address.postfach.Trim() + "\n" + string_address;
|
|
||||||
address_line_count++;
|
|
||||||
}
|
|
||||||
else if (!string.IsNullOrWhiteSpace(address.strasse.Trim()))
|
|
||||||
{
|
|
||||||
string_address = address.strasse.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 + "\n" + string_address;
|
|
||||||
address_line_count++;
|
|
||||||
}
|
|
||||||
|
|
||||||
// REIHENFOLGE
|
|
||||||
var nameattribs = new[]
|
|
||||||
{ address.name1, address.name2, address.name3, address.name4, address.name5, address.abteilung };
|
|
||||||
|
|
||||||
var names = "";
|
|
||||||
for (var i = 0; i < nameattribs.Length; i++)
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (address_line_count >= 7) break;
|
|
||||||
if (!string.IsNullOrWhiteSpace(nameattribs[i]))
|
|
||||||
{
|
|
||||||
names += "\n" + nameattribs[i];
|
|
||||||
address_line_count++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
Console.WriteLine("ERROR 15821");
|
|
||||||
}
|
|
||||||
|
|
||||||
string_address = names + "\n" + string_address;
|
|
||||||
} // Alternative B: plz valid and city existing
|
|
||||||
else if (!string.IsNullOrEmpty(address.ort) && CheckPLZ(address.plz, address.land))
|
|
||||||
{
|
|
||||||
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 if (!string.IsNullOrWhiteSpace(address.postfach.Trim()))
|
|
||||||
{
|
|
||||||
string_address = "Postfach " + 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 + "\n" + string_address;
|
|
||||||
address_line_count++;
|
|
||||||
}
|
|
||||||
|
|
||||||
var nameattribs = new[]
|
|
||||||
{ address.name1, address.name2, address.name3, address.name4, address.name5, address.abteilung };
|
|
||||||
|
|
||||||
var names = "";
|
|
||||||
for (var i = 0; i < nameattribs.Length; i++)
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (address_line_count >= 7) break;
|
|
||||||
if (!string.IsNullOrWhiteSpace(nameattribs[i]))
|
|
||||||
{
|
|
||||||
names += "\n" + nameattribs[i];
|
|
||||||
address_line_count++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
Console.WriteLine("ERROR 15821");
|
|
||||||
}
|
|
||||||
|
|
||||||
string_address = names + "\n" + string_address;
|
|
||||||
} // Error-Handling?
|
|
||||||
|
|
||||||
if (address_line_count > 1) return string_address;
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string CreateNameLine(string anredezus, string anrede, string titel, string vorname, string adel,
|
public static string CreateNameLine(string anredezus, string anrede, string titel, string vorname, string adel,
|
||||||
string name, string namezus)
|
string name, string namezus)
|
||||||
{
|
{
|
||||||
if (!string.IsNullOrWhiteSpace(anredezus))
|
try
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrWhiteSpace(anredezus))
|
||||||
|
return string.Join(" ",
|
||||||
|
new[] { anredezus, titel, vorname, adel, name }
|
||||||
|
.Where(s => !string.IsNullOrWhiteSpace(s))
|
||||||
|
)
|
||||||
|
+ (string.IsNullOrWhiteSpace(namezus) ? "" : $" ({namezus.Trim()})");
|
||||||
|
|
||||||
|
// else
|
||||||
return string.Join(" ",
|
return string.Join(" ",
|
||||||
new[] { anredezus, titel, vorname, adel, name }
|
new[] { anrede, titel, vorname, adel, name }
|
||||||
.Where(s => !string.IsNullOrWhiteSpace(s))
|
.Where(s => !string.IsNullOrWhiteSpace(s))
|
||||||
)
|
)
|
||||||
+ (string.IsNullOrWhiteSpace(namezus) ? "" : $" ({namezus.Trim()})");
|
+ (string.IsNullOrWhiteSpace(namezus) ? "" : $" ({namezus.Trim()})");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.Log($"Error while performing address name line creation: {ex.Message}", Logger.LogType.Error);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
|
||||||
// else
|
|
||||||
return string.Join(" ",
|
|
||||||
new[] { anrede, titel, vorname, adel, name }
|
|
||||||
.Where(s => !string.IsNullOrWhiteSpace(s))
|
|
||||||
)
|
|
||||||
+ (string.IsNullOrWhiteSpace(namezus) ? "" : $" ({namezus.Trim()})");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -224,29 +242,39 @@ public static class AddressCreator
|
|||||||
/// <returns>true or faslse, depending on result :+1:</returns>
|
/// <returns>true or faslse, depending on result :+1:</returns>
|
||||||
public static bool CheckPLZ(string plz, string land)
|
public static bool CheckPLZ(string plz, string land)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(plz)) return false;
|
try
|
||||||
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(plz)) return false;
|
||||||
|
|
||||||
var trimmedPlz = plz.Trim();
|
var trimmedPlz = plz.Trim();
|
||||||
var trimmedLand = land.ToLower().Trim();
|
var trimmedLand = land.ToLower().Trim();
|
||||||
|
|
||||||
// Check if it's a German country code
|
// Check if it's a German country code
|
||||||
var isGermany = trimmedLand == "germany" || trimmedLand == "ger" || trimmedLand == "de" ||
|
var isGermany = trimmedLand == "germany" || trimmedLand == "ger" || trimmedLand == "de" ||
|
||||||
trimmedLand == "deutschland" || trimmedLand == "";
|
trimmedLand == "deutschland" || trimmedLand == "";
|
||||||
|
|
||||||
if (isGermany)
|
if (isGermany)
|
||||||
// For Germany (including empty land), accept numeric postal codes with 5 digits
|
// For Germany (including empty land), accept numeric postal codes with 5 digits
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var iplz = Convert.ToInt32(trimmedPlz);
|
var iplz = Convert.ToInt32(trimmedPlz);
|
||||||
if (trimmedPlz.Length == 5) return true;
|
if (trimmedPlz.Length == 5) return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// For non-German countries, accept any non-empty postal code
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.Log($"Error while performing address plz check: {ex.Message}", Logger.LogType.Error);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
|
||||||
// For non-German countries, accept any non-empty postal code
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user