From 028df0fe91584edef4af501bd73fe525cb08ec66 Mon Sep 17 00:00:00 2001 From: Elias Fierke Date: Sat, 23 Aug 2025 11:48:28 +0200 Subject: [PATCH] [chore:] multiple things --- AddressCheck.cs | 33 ++++++----- CombineAddresses.cs | 5 +- DataStructures.cs | 32 +++++++++-- MainWindow.axaml.cs | 6 +- ResultWindow.axaml.cs | 54 ++++++++++++++---- .../net9.0/Avalonia/Resources.Inputs.cache | 2 +- obj/Debug/net9.0/Avalonia/resources | Bin 9201 -> 9954 bytes obj/Debug/net9.0/Logof Client.AssemblyInfo.cs | 4 +- .../Logof Client.AssemblyInfoInputs.cache | 2 +- obj/Logof Client.csproj.nuget.dgspec.json | 9 ++- obj/project.assets.json | 9 ++- obj/project.nuget.cache | 5 +- obj/project.packagespec.json | 2 +- obj/rider.project.model.nuget.info | 2 +- obj/rider.project.restore.info | 2 +- 15 files changed, 116 insertions(+), 51 deletions(-) diff --git a/AddressCheck.cs b/AddressCheck.cs index fe61589..c85b192 100644 --- a/AddressCheck.cs +++ b/AddressCheck.cs @@ -11,16 +11,20 @@ public class AddressCheck { PlzTooShort, PlzTooLong, + + // empty, + FullAddressTooLong, + DoubledRefsid, + MayBeSameAddress + } + + public enum WarningTypes + { NoCity, NoStreet, NoLastName, NoFirstName, - - // empty, - FullAddressTooLong, - NoStreetNumber, - DoubledRefsid, - MayBeSameAddress + NoStreetNumber } private readonly ProgressWindow _progress; @@ -30,9 +34,9 @@ public class AddressCheck _progress = progressWindow; } - public async Task)>> Perform(KasAddressList addresses) + public async Task, List)>> Perform(KasAddressList addresses) { - var failed_refsids = new List<(int, List)>(); + var failed_refsids = new List<(int, List, List)>(); var total = addresses.KasPersons.Count; var current = 0; @@ -41,6 +45,7 @@ public class AddressCheck foreach (var person in addresses.KasPersons) { var errors = new List(); + var warnings = new List(); var hasFaults = false; var address_component_count = 2; // cause anrede and name are first @@ -64,7 +69,7 @@ public class AddressCheck if (string.IsNullOrWhiteSpace(person.ort)) { hasFaults = true; - errors.Add(ErrorTypes.NoCity); + warnings.Add(WarningTypes.NoCity); } else { @@ -82,26 +87,26 @@ public class AddressCheck if (intcount == 0) { hasFaults = true; - errors.Add(ErrorTypes.NoStreetNumber); + warnings.Add(WarningTypes.NoStreetNumber); } if (string.IsNullOrWhiteSpace(person.name)) { hasFaults = true; - errors.Add(ErrorTypes.NoLastName); + warnings.Add(WarningTypes.NoLastName); } if (string.IsNullOrWhiteSpace(person.vorname)) { hasFaults = true; - errors.Add(ErrorTypes.NoFirstName); + warnings.Add(WarningTypes.NoFirstName); } if (string.IsNullOrWhiteSpace(person.strasse)) { hasFaults = true; - errors.Add(ErrorTypes.NoStreet); + warnings.Add(WarningTypes.NoStreet); } else { @@ -160,7 +165,7 @@ public class AddressCheck if (hasFaults) lock (failed_refsids) { - failed_refsids.Add((person.refsid, errors)); + failed_refsids.Add((person.refsid, errors, warnings)); } // Fortschritt aktualisieren diff --git a/CombineAddresses.cs b/CombineAddresses.cs index 2b218e7..2596b16 100644 --- a/CombineAddresses.cs +++ b/CombineAddresses.cs @@ -27,7 +27,6 @@ public class CombineAddresses private async Task Merge(KasAddressList first, KasAddressList second, int num, int total) { - KasAddressList result = new(); foreach (var sec in second.KasPersons) { var is_new = true; @@ -68,7 +67,7 @@ public class CombineAddresses } } - if (is_new) result.KasPersons.Add(sec); + if (is_new) first.KasPersons.Add(sec); var subperc = second.KasPersons.IndexOf(sec) / second.KasPersons.Count; var percent = (num + (double)subperc) / total * 100; await Dispatcher.UIThread.InvokeAsync(() => @@ -82,6 +81,6 @@ public class CombineAddresses }); } - return result; + return first; } } \ No newline at end of file diff --git a/DataStructures.cs b/DataStructures.cs index 2c24ed7..c122084 100644 --- a/DataStructures.cs +++ b/DataStructures.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; namespace Logof_Client; @@ -121,14 +122,35 @@ public class KasPerson public class KasPersonError { - public KasPersonError((int, List) single_result) + public KasPersonError((int, List, List) single_result) { refsid = single_result.Item1; - foreach (var err in single_result.Item2) errors += err + ", "; - errors = errors.Trim(); - errors = errors.TrimEnd(','); + try + { + foreach (var err in single_result.Item2) errors += err + ", "; + errors = errors.Trim(); + errors = errors.TrimEnd(','); + } + catch + { + } + + try + { + if (single_result.Item3 != null) + { + foreach (var err in single_result.Item3) warnings += err + ", "; + warnings = warnings.Trim(); + warnings = warnings.TrimEnd(','); + } + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } } public int refsid { get; set; } - public string errors { get; set; } + public string errors { get; set; } = ""; + public string warnings { get; set; } = ""; } \ No newline at end of file diff --git a/MainWindow.axaml.cs b/MainWindow.axaml.cs index 54a0099..7d844ac 100644 --- a/MainWindow.axaml.cs +++ b/MainWindow.axaml.cs @@ -5,7 +5,6 @@ using System.Threading.Tasks; using Avalonia.Controls; using Avalonia.Interactivity; using Avalonia.Platform.Storage; -using Avalonia.Threading; namespace Logof_Client; @@ -172,13 +171,10 @@ public partial class MainWindow : Window progressWindow.Close(); - File.WriteAllText(Dispatcher.UIThread.Invoke(() => OpenSettingsSaveAsDialog()).Result, + File.WriteAllText(OpenSettingsSaveAsDialog().Result, new CsvBuilder( "refsid,anrede,titel,vorname,adel,name,namezus,anredzus,strasse,strasse2,plz,ort,land,pplz,postfach,name1,name2,name3,name4,name5,funktion,funktion2,abteilung,funktionad,lastupdate", result).BuildKas()); - - - //new ResultWindow(result).Show(); } private async Task OpenSettingsSaveAsDialog() diff --git a/ResultWindow.axaml.cs b/ResultWindow.axaml.cs index d442f98..9245322 100644 --- a/ResultWindow.axaml.cs +++ b/ResultWindow.axaml.cs @@ -8,16 +8,17 @@ namespace Logof_Client; public partial class ResultWindow : Window { public List errortypecheckboxes = new(); - public List<(int, List)> ur_result; + public List<(int, List, List)> ur_result; + public List warningtypecheckboxes = new(); - public ResultWindow(List<(int, List)> result) + public ResultWindow(List<(int, List, List)> result) { InitializeComponent(); ur_result = result; Load(result); } - private void GenerateView(List<(int, List)> result) + private void GenerateView(List<(int, List, List)> result) { var errors = new List(); foreach (var single_result in result) errors.Add(new KasPersonError(single_result)); @@ -25,14 +26,22 @@ public partial class ResultWindow : Window DgResult.ItemsSource = errors; } - private void Load(List<(int, List)> result) + private void Load(List<(int, List, List)> result) { var knownErrors = new List(); + var knownWarnings = new List(); foreach (var single_result in result) - foreach (var errtyp in single_result.Item2) - if (!knownErrors.Contains(errtyp)) - knownErrors.Add(errtyp); + { + foreach (var errtyp in single_result.Item2) + if (!knownErrors.Contains(errtyp)) + knownErrors.Add(errtyp); + + foreach (var wartyp in single_result.Item3) + if (!knownWarnings.Contains(wartyp)) + knownWarnings.Add(wartyp); + } + foreach (var errtype in knownErrors) { @@ -44,6 +53,16 @@ public partial class ResultWindow : Window StpFilterOptions.Children.Add(cb); } + foreach (var wartype in knownWarnings) + { + var cb = new CheckBox(); + cb.IsChecked = true; + cb.Content = wartype.ToString(); + cb.Click += (sender, e) => UpdateFilter(); + warningtypecheckboxes.Add(cb); + StpFilterOptions.Children.Add(cb); + } + GenerateView(result); } @@ -53,17 +72,30 @@ public partial class ResultWindow : Window private void UpdateFilter() { - var temp_result = new List<(int, List)>(); + var temp_result = new List<(int, List, List)>(); var checked_types = new List(); + var checked_types_war = new List(); foreach (var cb in errortypecheckboxes) if (cb.IsChecked == true) checked_types.Add( (AddressCheck.ErrorTypes)Enum.Parse(typeof(AddressCheck.ErrorTypes), cb.Content.ToString())); + foreach (var cb in warningtypecheckboxes) + if (cb.IsChecked == true) + checked_types_war.Add( + (AddressCheck.WarningTypes)Enum.Parse(typeof(AddressCheck.WarningTypes), cb.Content.ToString())); + foreach (var sres in ur_result) - foreach (var err in sres.Item2) - if (checked_types.Contains(err) && !temp_result.Contains(sres)) - temp_result.Add(sres); + { + foreach (var err in sres.Item2) + if (checked_types.Contains(err) && !temp_result.Contains(sres)) + temp_result.Add(sres); + + foreach (var war in sres.Item3) + if (checked_types_war.Contains(war) && !temp_result.Contains(sres)) + temp_result.Add(sres); + } + var errors = new List(); foreach (var single_result in temp_result) errors.Add(new KasPersonError(single_result)); diff --git a/obj/Debug/net9.0/Avalonia/Resources.Inputs.cache b/obj/Debug/net9.0/Avalonia/Resources.Inputs.cache index 3bf8e10..27f326f 100644 --- a/obj/Debug/net9.0/Avalonia/Resources.Inputs.cache +++ b/obj/Debug/net9.0/Avalonia/Resources.Inputs.cache @@ -1 +1 @@ -982c4bab1be7433e0655bc9d9093ed492303bd16c33e9bf09c663ad2ef1afbaa +9d71302617c5994ca25ba86e9f6470b4429e0686166ec81d7a41e9ab31df1343 diff --git a/obj/Debug/net9.0/Avalonia/resources b/obj/Debug/net9.0/Avalonia/resources index 4a9a04bc51a357b3a191d155e5486020c90a3bfc..292e98606e52d78e7fa3b6134587ed26f0460ee8 100644 GIT binary patch delta 290 zcmez9{>XQNsf2(C1B0NxZ)$OIVtT4meuZ9QMPhD_u-HUj8751~iP=(2Gi4{XD>Ahz zZCtg2hu^cf}ZtIX&l`%;aoaC8v@+=ltBH%)Hci|2(jm zl0t=*Ut(@5vYZk~%j9+Z9Ft!PR&M^ztH?O{0Sn7yS#C7}B=g-8bBf^>z*Mt&B&X(7T97z-uh8Sk1%fP-8`ya!cX9Df4&Yx+(2&gw1Y{ZUs@nWgkV6OncMW1~ delta 108 zcmaFl`_X-Zsf4^B1B0NxZ)$OIVtT4meuZ9QMPhD_lJG=d872?0iP=(2E2Jj2D>6-y z-?(Z8&tzwA)5!_~1)B@`6d5O<