diff --git a/DataStore/DataStructures.cs b/DataStore/DataStructures.cs index 7f266f9..688a016 100644 --- a/DataStore/DataStructures.cs +++ b/DataStore/DataStructures.cs @@ -208,7 +208,6 @@ public class KasPerson public static int GenerateNewID(int base_id) { - //var newid = 100000 + base_id; int highest = 0; foreach (var set in Settings._instance.addressSets.addresses) { @@ -217,8 +216,6 @@ public class KasPerson if(add.id >= highest) highest = add.id+1; } } - - return highest + base_id + 1; } @@ -228,10 +225,8 @@ public class KasPerson { return refsid + " - " + name; } - else - { - return id + " - " + name; - } + + return id + " - " + name; } } @@ -239,12 +234,10 @@ public class KasPersonError { public KasPersonError((List, List) single_result) { - //refsid = single_result.Item1; errors = single_result.Item1; warnings = single_result.Item2; } - //public int refsid { get; set; } public List errors { get; set; } = new(); public List warnings { get; set; } = new(); diff --git a/DataStore/Settings.cs b/DataStore/Settings.cs index 86c2980..09fecb4 100644 --- a/DataStore/Settings.cs +++ b/DataStore/Settings.cs @@ -19,9 +19,6 @@ public class Settings public Customers customers = new(); public PdfExportSettings pdfExport { get; set; } = new(); - // public string settingsPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), - // "logofclient", "config.json"); - public Settings() { _instance = this; @@ -32,7 +29,6 @@ public class Settings { if (!Directory.Exists(Global._instance.config_path) && !File.Exists((Global._instance.config_path))) Directory.CreateDirectory(Global._instance.config_path); - // if (!string.IsNullOrEmpty(Global._instance.config_path)) _instance.settingsPath = Global._instance.config_path; // Always save with current schema version _instance.schemaVersion = SchemaMigration.CURRENT_SCHEMA_VERSION; @@ -42,8 +38,6 @@ public class Settings public static void Load() { - //if (!string.IsNullOrEmpty(Global._instance.config_path)) _instance.settingsPath = Global._instance.config_path; - try { var contents = File.ReadAllText(Path.Combine(Global._instance.config_path, "config.json")); @@ -158,12 +152,6 @@ public class Global public static void Load() { - // if (!File.Exists(Path.Combine( - // Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "logofclient", - // "global.config"))) - // File.Create(Path.Combine( - // Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "logofclient", - // "global.config")); try { var contents = File.ReadAllText(Path.Combine( @@ -247,13 +235,6 @@ public class Customer return null; } - - - // public static int GetIDByCustomerListItem(string item_content) - // { - // var id = item_content.Split(" - ")[0]; - // return int.Parse(id); - // } } public class AddressSets diff --git a/Logger.cs b/Logger.cs index 94831a6..0fea6b7 100644 --- a/Logger.cs +++ b/Logger.cs @@ -28,7 +28,6 @@ public static class Logger { Console.WriteLine(ex); } - } public enum LogType diff --git a/MainWindow.axaml.cs b/MainWindow.axaml.cs index ee3530d..b1ed756 100644 --- a/MainWindow.axaml.cs +++ b/MainWindow.axaml.cs @@ -31,7 +31,7 @@ public partial class MainWindow : Window SetSettingsCustomerEnabledState(false); //Hide(); - var s = new StartupWindow(); + //var s = new StartupWindow(); //s.Show(); _instance = this; @@ -85,74 +85,43 @@ public partial class MainWindow : Window { Logger.Log($"Error while doing wiki stuff: {ex.Message}", Logger.LogType.Error); } - - //Thread.Sleep(3000); - //Show(); } private async void StartAddressCheck(int addresSetID) { - //var addresses = DataImport.ImportKasAddressList(path); // Ihr Code hier - var progressWindow = new ProgressWindow(); - progressWindow.Show(_instance); var processor = new AddressCheck(progressWindow); var result = await processor.Perform(addresSetID); - // foreach (var item in result) - // { - // } - progressWindow.Close(); - - new ResultWindow(result, addresSetID).Show(); - Settings.Save(); - - //await MessageBox.Show(_instance, $"{result.Count} Einträge fehlerhaft.", "Fertig"); } private async void StartAddressShortener(KasAddressList set) { - //var addresses = DataImport.ImportKasAddressList(path); // Ihr Code hier - var progressWindow = new ProgressWindow(); - progressWindow.Show(_instance); var processor = new AddressShortener(progressWindow); await processor.Perform(set); - // foreach (var item in result) - // { - // } - progressWindow.Close(); Settings.Save(); - //await MessageBox.Show(_instance, $"{result.Count} Einträge fehlerhaft.", "Fertig"); } private async void StartAddressRepairer(KasAddressList set) { - //var addresses = DataImport.ImportKasAddressList(path); // Ihr Code hier - var progressWindow = new ProgressWindow(); - progressWindow.Show(_instance); var processor = new AddressRepair(progressWindow); await processor.Perform(set); - // foreach (var item in result) - // { - // } - progressWindow.Close(); Settings.Save(); - //await MessageBox.Show(_instance, $"{result.Count} Einträge fehlerhaft.", "Fertig"); } @@ -170,7 +139,7 @@ public partial class MainWindow : Window Process.Start(new ProcessStartInfo { FileName = "https://mypapercloud.de/logof/", - UseShellExecute = true // Wichtig für Plattformübergreifendes Öffnen + UseShellExecute = true }); } catch (Exception ex) @@ -186,7 +155,7 @@ public partial class MainWindow : Window Process.Start(new ProcessStartInfo { FileName = "https://mypapercloud.de/logof/wiki/", - UseShellExecute = true // Wichtig für Plattformübergreifendes Öffnen + UseShellExecute = true }); } catch (Exception ex) @@ -202,7 +171,7 @@ public partial class MainWindow : Window Process.Start(new ProcessStartInfo { FileName = "https://git.mypapercloud.de/fierke/logofclient", - UseShellExecute = true // Wichtig für Plattformübergreifendes Öffnen + UseShellExecute = true }); } catch (Exception ex) @@ -251,19 +220,6 @@ public partial class MainWindow : Window _selectedWikiFilePath = item.Path; var text = await _wikiService.LoadFileContentAsync(item.Path); MsvWikiView.Markdown = text; - // try - // { - // PreviewPanel.Children.Clear(); - // var rendered = MarkdownRenderer.Render(text ?? string.Empty); - // PreviewPanel.Children.Add(rendered); - // } - // catch (Exception ex) - // { - // Logger.Log($"Error while rendering markdown: {ex.Message}", Logger.LogType.Error); - // PreviewPanel.Children.Clear(); - // PreviewPanel.Children.Add(new TextBlock { Text = text ?? string.Empty }); - // } - EditButton.IsEnabled = true; } else @@ -407,8 +363,7 @@ public partial class MainWindow : Window TbWikiPath.Text = chosen; Global._instance.wiki_storage_path = chosen; Global.Save(); - - // reinit wiki service and reload tree + _wikiService = new WikiService(); PopulateNavTree(); } @@ -424,7 +379,6 @@ public partial class MainWindow : Window if (folder == null || folder.Count == 0) return; var chosen = PathUtilities.NormalizeFileSystemPath(folder[0].Path); - //TbFontPath.Text = chosen; Global._instance.font_path = chosen; Global.Save(); } @@ -468,9 +422,6 @@ public partial class MainWindow : Window Settings._instance.addressSets.addresses.Add(result.Item2); Settings.Save(); progressWindow.Close(); - - - //new ResultWindow(result, addresSetID).Show(); } @@ -500,8 +451,6 @@ public partial class MainWindow : Window foreach (var customer in Settings._instance.customers.customers) if (customer.ID == Settings._instance.customers.current.ID) customer.name = TbSettingsCustomerName.Text; - //Settings.Save(); - //RefreshCustomerItems(); } private void LstSettingsCustomers_OnSelectionChanged(object? sender, SelectionChangedEventArgs e) @@ -510,9 +459,6 @@ public partial class MainWindow : Window if (LstSettingsCustomers.SelectedIndex < 0) return; Settings._instance.customers.current = ((Customer)LstSettingsCustomers.SelectedItems[0]); - //foreach (var customer in Settings._instance.customers.customers) - //if (customer.ID == Settings._instance.customers.current.ID) - //{ TbSettingsCustomerDescription.Text = Settings._instance.customers.current.description; TbSettingsCustomerName.Text = Settings._instance.customers.current.name; TbSettingsCustomerSenderAddress.Text = Settings._instance.customers.current.sender_address; @@ -522,7 +468,6 @@ public partial class MainWindow : Window else TbSettingsCustomerPatchInfo.Text = ""; SetSettingsCustomerEnabledState(); - //} } private void SetSettingsCustomerEnabledState(bool enable = true) @@ -550,8 +495,6 @@ public partial class MainWindow : Window PopulateNavTree(editedWikiFilePath, editedWikiFilePath); }; ew.Show(); - - //await MessageBox.Show(this, "Edit feature is currently disabled.", "Edit Disabled"); } public void RefreshCustomerItems(int index = 0) @@ -618,7 +561,7 @@ public partial class MainWindow : Window { try { - MakeCalcManVisible(); + MakeCalcManVisible(); var opts = new FilePickerOpenOptions(); opts.Title = "Address-Set importieren..."; opts.AllowMultiple = false; @@ -628,14 +571,11 @@ public partial class MainWindow : Window opts.FileTypeFilter = new[] { type }; var paths = await StorageProvider.OpenFilePickerAsync(opts); - if (paths?.Count <= 0) return; - if (LstCustomers.SelectedIndex < 0) return; var selected_path = paths[0].Path; - foreach (var customer in Settings._instance.customers.customers) if (customer == ((Customer)LstCustomers.SelectedItems[0])) { @@ -651,8 +591,6 @@ public partial class MainWindow : Window got.Item2.SetOwner(customer.ID); Settings._instance.addressSets.addresses.Add(got.Item2); } - - //var customer_id = int.Parse(LstCustomers.SelectedItem.ToString().Split(" - ")[0]); RefreshAddressSetListItems(customer.ID); } else @@ -667,8 +605,6 @@ public partial class MainWindow : Window got.Item2.SetOwner(customer.ID); Settings._instance.addressSets.addresses.Add(got.Item2); } - - //var customer_id = int.Parse(LstCustomers.SelectedItem.ToString().Split(" - ")[0]); RefreshAddressSetListItems(customer.ID); } } @@ -732,9 +668,6 @@ public partial class MainWindow : Window BtnShorten.IsEnabled = false; BtnRepair.IsEnabled = false; } - - - } } @@ -753,19 +686,13 @@ public partial class MainWindow : Window opts.FileTypeFilter = new[] { type }; var paths = await StorageProvider.OpenFilePickerAsync(opts); - if (paths?.Count <= 0) return; - //if (LstSettingsCustomers.SelectedIndex < 0) return; - - var selected_path = paths[0].Path; - foreach (var customer in Settings._instance.customers.customers) if (customer.ID == ((Customer)LstSettingsCustomers.SelectedItems[0]).ID) customer.patch = AddressPatch.Import(selected_path); - - + Settings.Save(); } catch (Exception ex) { @@ -796,7 +723,6 @@ public partial class MainWindow : Window MessageBox.Show(this, "Unknown Error: " + ex.Message, "Error"); Logger.Log($"Error while converting: {ex.Message}", Logger.LogType.Error); } - } private void BtnCombineDifference_OnClick(object? sender, RoutedEventArgs e) @@ -850,7 +776,8 @@ public partial class MainWindow : Window if (RbComprefsid.IsChecked == true) { return CombineAddresses.CombineType.refsid; - } else if (RbCompfinAd.IsChecked == true) + } + if (RbCompfinAd.IsChecked == true) { return CombineAddresses.CombineType.final_adress; } @@ -912,7 +839,7 @@ public partial class MainWindow : Window filePath ); - Logger.Log("PDF OK"); + Logger.Log("PDF seems OK"); } } @@ -1109,9 +1036,7 @@ public partial class MainWindow : Window } if (_selectedCountry == null) return; - //Console.WriteLine("Refreshing alternatives..."); foreach (var a in _selectedCountry.alternatives) LbSettingsAlternatives.Items.Add(a); - //Console.WriteLine(a); TbSettingsCountryName.Text = _selectedCountry.name; TbSettingsCountryTranslation.Text = _selectedCountry.translation; @@ -1266,7 +1191,6 @@ public partial class MainWindow : Window if (set.ID == id) { curr_set = set; - } @@ -1329,7 +1253,6 @@ public partial class MainWindow : Window { Logger.Log($"Error while changing CSV divider: {ex.Message}", Logger.LogType.Error); } - } private async void MnIAdSetDelete_OnClick(object? sender, RoutedEventArgs e) @@ -1347,14 +1270,14 @@ public partial class MainWindow : Window Settings.Save(); RefreshAddressSetListItems(cus_id); break; - } } catch (Exception ex) { MessageBox.Show(this, ex.StackTrace, "Fehler"); Logger.Log($"Error while deleting address set: {ex.Message}", Logger.LogType.Error); - }} + } + } } private void Tb_OnTextChanged(object? sender, TextChangedEventArgs e) diff --git a/NamingWindow.axaml.cs b/NamingWindow.axaml.cs index 0773411..d022a88 100644 --- a/NamingWindow.axaml.cs +++ b/NamingWindow.axaml.cs @@ -40,7 +40,6 @@ public partial class NamingWindow : Window AddButton("Ok"); - var tcs = new TaskCompletionSource(); wind.Closed += delegate { tcs.TrySetResult(res); }; if (parent != null) diff --git a/ProgressWindow.axaml.cs b/ProgressWindow.axaml.cs index 40cacc6..34caeea 100644 --- a/ProgressWindow.axaml.cs +++ b/ProgressWindow.axaml.cs @@ -19,6 +19,5 @@ public partial class ProgressWindow : Window public void AddToLog(string message, string percent) { TbLog.Text = message + $"\n{percent}%"; - //ScvLog.ScrollToEnd(); } } \ No newline at end of file diff --git a/ResultWindow.axaml.cs b/ResultWindow.axaml.cs index 4d71059..7a709fb 100644 --- a/ResultWindow.axaml.cs +++ b/ResultWindow.axaml.cs @@ -21,27 +21,20 @@ public partial class ResultWindow : Window { InitializeComponent(); ur_result = result; - ur_addresses = ur_addresses; + Load(result); - //ViewSingle(200552426); } private void GenerateView(List result) { try { - - // Filter to only show persons with errors var result_with_errors = result.Where(p => p.PersonError != null).ToList(); LblResultCount.Content = $"{result_with_errors.Count}/{ur_result.Count} Ergebnisse"; - // TbResults.Text = ""; - // foreach (var person in result_with_errors) TbResults.Text += person.PersonError.GetString()+"\n"; LbResults.Items.Clear(); foreach (var person in result_with_errors) LbResults.Items.Add(person.PersonError.ToString(person)); - // StkResults.Children.Clear(); - // foreach (var person in result_with_errors) StkResults.Children.Add(CreatePersonGrid(person)); } catch (Exception ex) { @@ -49,40 +42,6 @@ public partial class ResultWindow : Window } } - private Grid CreatePersonGrid(KasPerson person) - { - var grid = new Grid - { - ColumnDefinitions = ColumnDefinitions.Parse("100,*,100,*,100,*"), - RowDefinitions = RowDefinitions.Parse("Auto"), - Margin = new Thickness(0, 5, 0, 5), - Background = new SolidColorBrush(Color.Parse("#F0F0F0")) - }; - - // ID - grid.Children.Add(new TextBlock - { - Text = "id: ", - FontWeight = FontWeight.Bold, Margin = new Thickness(5) - }); - grid.Children.Add(new TextBlock { Text = person.id.ToString(), Margin = new Thickness(5) }); - Grid.SetColumn(grid.Children[1], 1); - - // PLZ - grid.Children.Add(new TextBlock { Text = "plz:", FontWeight = FontWeight.Bold, Margin = new Thickness(5) }); - Grid.SetColumn(grid.Children[2], 2); - grid.Children.Add(new TextBlock { Text = person.plz, Margin = new Thickness(5) }); - Grid.SetColumn(grid.Children[3], 3); - - // PPLZ - grid.Children.Add(new TextBlock { Text = "errors:", FontWeight = FontWeight.Bold, Margin = new Thickness(5) }); - Grid.SetColumn(grid.Children[4], 4); - grid.Children.Add(new TextBlock { Text = person.PersonError.GetString(), Margin = new Thickness(5) }); - Grid.SetColumn(grid.Children[5], 5); - - return grid; - } - private void ViewSingle(int id) { foreach (var result in ur_addresses.KasPersons) @@ -139,7 +98,7 @@ public partial class ResultWindow : Window var cb = new CheckBox(); cb.IsChecked = true; cb.Content = errtype.ToString(); - //cb.Click += (sender, e) => UpdateFilter(); + errortypecheckboxes.Add(cb); StpFilterOptions.Children.Add(cb); } @@ -149,7 +108,7 @@ public partial class ResultWindow : Window var cb = new CheckBox(); cb.IsChecked = true; cb.Content = wartype.ToString(); - //cb.Click += (sender, e) => UpdateFilter(); + warningtypecheckboxes.Add(cb); StpFilterOptions.Children.Add(cb); } @@ -163,10 +122,6 @@ public partial class ResultWindow : Window } - private void BtnUpdateFilter_OnClick(object? sender, RoutedEventArgs e) - { - } - private void UpdateFilter() { try @@ -226,10 +181,7 @@ public partial class ResultWindow : Window LbResults.Items.Clear(); foreach (var person in temp_result) LbResults.Items.Add(person.PersonError.ToString(person)); - // TbResults.Text = ""; - // foreach (var person in temp_result) TbResults.Text += person.PersonError.GetString() +"\n"; - // StkResults.Children.Clear(); - // foreach (var person in temp_result) StkResults.Children.Add(CreatePersonGrid(person)); + } catch (Exception ex) { Logger.Log("Error while updating filter: " + ex.Message, Logger.LogType.Warning); @@ -240,16 +192,7 @@ public partial class ResultWindow : Window private void BtnShowSelected_OnClick(object? sender, RoutedEventArgs e) { - // foreach (var selected in DgResult.SelectedItems) - // try - // { - // var _asKas = (KasPerson)selected; - // ViewSingle(_asKas.id); - // } - // catch (Exception ex) - // { - // Console.WriteLine(ex.Message); - // } + // once upon a time, there was a feature like this } private void BtnExecuteFilter_OnClick(object? sender, RoutedEventArgs e) diff --git a/StartupWindow.axaml.cs b/StartupWindow.axaml.cs index fb26fba..bbf7bb2 100644 --- a/StartupWindow.axaml.cs +++ b/StartupWindow.axaml.cs @@ -8,6 +8,4 @@ public partial class StartupWindow : Window { InitializeComponent(); } - - } \ No newline at end of file diff --git a/Tasks/AddressCheck.cs b/Tasks/AddressCheck.cs index 2133f2e..676da6a 100644 --- a/Tasks/AddressCheck.cs +++ b/Tasks/AddressCheck.cs @@ -79,20 +79,6 @@ public class AddressCheck hasFaults = true; errors.Add(ErrorTypes.PlzNotUsable); } - // if ((person.plz < 10000 && string.IsNullOrWhiteSpace(person.land)) || - // (person.plz < 10000 && person.land == "GER") || - // (person.plz < 10000 && person.land == "DE")) - // { - // hasFaults = true; - // errors.Add(ErrorTypes.PlzTooShort); - // } - // else if ((person.plz > 99999 && string.IsNullOrWhiteSpace(person.land)) || - // (person.plz > 99999 && person.land == "GER") || - // (person.plz > 99999 && person.land == "DE")) - // { - // hasFaults = true; - // errors.Add(ErrorTypes.PlzTooLong); - // } } @@ -109,21 +95,6 @@ public class AddressCheck hasFaults = true; errors.Add(ErrorTypes.PPlzNotUsable); } - - // if ((person.pplz < 10000 && string.IsNullOrWhiteSpace(person.land)) || - // (person.pplz < 10000 && person.land == "GER") || - // (person.pplz < 10000 && person.land == "DE")) - // { - // hasFaults = true; - // errors.Add(ErrorTypes.PPlzTooShort); - // } - // else if ((person.pplz > 99999 && string.IsNullOrWhiteSpace(person.land)) || - // (person.pplz > 99999 && person.land == "GER") || - // (person.pplz > 99999 && person.land == "DE")) - // { - // hasFaults = true; - // errors.Add(ErrorTypes.PPlzTooLong); - // } } if (warnings.Contains(WarningTypes.NoPLZ) && warnings.Contains(WarningTypes.NoPPLZ)) @@ -219,8 +190,7 @@ public class AddressCheck person.name2 == person2.name2 && person.name3 == person2.name3 && person.name4 == person2.name4 && - person.name5 == person2.name5) // - + person.name5 == person2.name5) { hasFaults = true; errors.Add(ErrorTypes.MayBeSameAddress); @@ -265,7 +235,6 @@ public class AddressCheck return Settings._instance.addressSets.addresses[adset_index].KasPersons .Where(p => p.PersonError != null) .ToList(); - } catch (Exception ex) { diff --git a/Tasks/AddressCreation.cs b/Tasks/AddressCreation.cs index f3aa2b0..e5443ba 100644 --- a/Tasks/AddressCreation.cs +++ b/Tasks/AddressCreation.cs @@ -5,36 +5,6 @@ namespace Logof_Client; public static class AddressCreator { - //+++ Aufbau +++ - // - // Von unten anfangen, max. 7 Zeilen - // - // + Wenn Land nicht Deutschland Abbildung von Land (Fettgedruckt) - // - // Alternative A (wenn PPLZ + Ort ausgefüllt): - // + Abbildung PPLZ + Ort - Ort ggf. Abschneiden, wenn länger als eine Zeile … das längste was ich finden konnte: „Giugliano in Campania-Lago Patra“ (passt exakt auf eine Zeile) - // + Abbildung Postfach – wenn leer, dann Straße - // + Abbildung Wenn Anredezusatz nicht leer, Anredezusatz, sonst Anrede + Titel + Vorname + Adel + Name + Namenszusatz in Klammern - // + Abbildung Name 1 + Name 2 + Name 3 + Name 4 + Name 5 + Abteilung (insgesamt max. 7 Zeilen) - // - // ansonsten - // - // + Abbildung PLZ + Ort - Ort ggf. Abschneiden, wenn länger als eine Zeile … das längste was ich finden konnte: „Giugliano in Campania-Lago Patra“ (passt exakt auf eine Zeile) - // + Abbildung Straße – wenn Straße leer, dann Postfach - // + Abbildung Wenn Anredezusatz nicht leer, Anredezusatz, sonst Anrede + Titel + Vorname + Adel + Name + Namenszusatz in Klammern - // + Abbildung Name 1 + Name 2 + Name 3 + Name 4 + Name 5 + Abteilung (insgesamt max. 7 Zeilen) - // - // Auswurf Fehler-Datei - // - // + wenn keine PLZ und/oder kein Ort -> Fehler - // + wenn kein Name 1-5 und/oder Name -> Fehler - // - // Auswurf CSV-Datei (Komma/TAB, UTF-8, ISO…) - // - // 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. /// @@ -93,7 +63,7 @@ public static class AddressCreator } CountryFound: - string_address = "**" + countryToShow + "**"; // Needs to be bold + string_address = "**" + countryToShow + "**"; // bold address_line_count++; } @@ -125,8 +95,7 @@ public static class AddressCreator 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 }; @@ -152,7 +121,6 @@ public static class AddressCreator { string plz = address.plz; if (address.IsGermany()) plz = NormalizeGermanPLZ(address.plz); - KasPerson.SetUsedPLZ(id, plz); string_address = plz + " " + address.ort + "\n" + string_address; @@ -214,8 +182,7 @@ public static class AddressCreator .Where(s => !string.IsNullOrWhiteSpace(s)) ) + (string.IsNullOrWhiteSpace(namezus) ? "" : $" ({namezus.Trim()})"); - - // else + return string.Join(" ", new[] { anrede, titel, vorname, adel, name } .Where(s => !string.IsNullOrWhiteSpace(s)) @@ -271,7 +238,6 @@ public static class AddressCreator } return false; - } public static string NormalizeGermanPLZ(string plz) diff --git a/Tasks/AddressPatch.cs b/Tasks/AddressPatch.cs index 08f2484..07a4786 100644 --- a/Tasks/AddressPatch.cs +++ b/Tasks/AddressPatch.cs @@ -63,37 +63,37 @@ public class AddressPatch { var patch = new AddressPatch(); - // Alle Zeilen aus der Datei laden - var lines = File.ReadAllLines(filename.LocalPath); - - // Alle Properties der Klasse (Strings und bools) - var properties = typeof(AddressPatch).GetProperties(BindingFlags.Public | BindingFlags.Instance); - - // Nur die Properties, die mit _is enden (also die String-Werte) - var stringProps = properties.Where(p => p.PropertyType == typeof(string) && p.Name.EndsWith("_is")); - - foreach (var prop in stringProps) - { - // Beispiel: prop.Name = "name_is" - var baseName = prop.Name.Substring(0, prop.Name.Length - 3); // "name" - - // In der Datei wird nach "name:" gesucht (ohne _is) - var line = lines.FirstOrDefault(l => l.StartsWith(baseName + ":")); - if (line != null) - { - // Wert extrahieren (alles nach dem Doppelpunkt) - var value = line.Substring(line.IndexOf(':') + 1).Trim(); - - // Wert im Patch-Objekt setzen - prop.SetValue(patch, value); - - // Passendes has_ Feld aktivieren, z.B. "has_name" - var hasProp = properties.FirstOrDefault(p => p.Name == "has_" + baseName); - if (hasProp != null && hasProp.PropertyType == typeof(bool)) hasProp.SetValue(patch, true); - } - } - - return patch; + // Alle Zeilen aus der Datei laden + var lines = File.ReadAllLines(filename.LocalPath); + + // Alle Properties der Klasse (Strings und bools) + var properties = typeof(AddressPatch).GetProperties(BindingFlags.Public | BindingFlags.Instance); + + // Nur die Properties, die mit _is enden (also die String-Werte) + var stringProps = properties.Where(p => p.PropertyType == typeof(string) && p.Name.EndsWith("_is")); + + foreach (var prop in stringProps) + { + // Beispiel: prop.Name = "name_is" + var baseName = prop.Name.Substring(0, prop.Name.Length - 3); // "name" + + // In der Datei wird nach "name:" gesucht (ohne _is) + var line = lines.FirstOrDefault(l => l.StartsWith(baseName + ":")); + if (line != null) + { + // Wert extrahieren (alles nach dem Doppelpunkt) + var value = line.Substring(line.IndexOf(':') + 1).Trim(); + + // Wert im Patch-Objekt setzen + prop.SetValue(patch, value); + + // Passendes has_ Feld aktivieren, z.B. "has_name" + var hasProp = properties.FirstOrDefault(p => p.Name == "has_" + baseName); + if (hasProp != null && hasProp.PropertyType == typeof(bool)) hasProp.SetValue(patch, true); + } + } + + return patch; } catch (Exception ex) { @@ -101,8 +101,6 @@ public class AddressPatch } return null; - - } @@ -135,6 +133,5 @@ public class AddressPatch } return "Error while parsing"; - } } \ No newline at end of file diff --git a/Tasks/AddressRepair.cs b/Tasks/AddressRepair.cs index 954c9f6..4654beb 100644 --- a/Tasks/AddressRepair.cs +++ b/Tasks/AddressRepair.cs @@ -14,7 +14,6 @@ public class AddressRepair(ProgressWindow progressWindow) { foreach (var person in list.KasPersons) { - // German PLZ too short (e.g. Dresden) if (person.IsGermany() && person.plz.Length <= 4) { @@ -23,13 +22,11 @@ public class AddressRepair(ProgressWindow progressWindow) person.plz = "0" + person.plz; } } - } } catch (Exception ex) { Logger.Log($"Error while performing address shortener: {ex.Message}", Logger.LogType.Error); } - } } \ No newline at end of file diff --git a/Tasks/AddressShortener.cs b/Tasks/AddressShortener.cs index 53ac048..d133f63 100644 --- a/Tasks/AddressShortener.cs +++ b/Tasks/AddressShortener.cs @@ -8,72 +8,69 @@ namespace Logof_Client; public class AddressShortener(ProgressWindow progressWindow) { - private readonly ProgressWindow _progress = progressWindow; - public async Task Perform(KasAddressList list) { try { List doubled_ids = new List(); - for (int i = 0; i < list.KasPersons.Count; i++) - { - var address = list.KasPersons[i]; - for (int j = 0; j < list.KasPersons.Count; j++) - { - if (i == j) continue; - var sec_address = list.KasPersons[j]; - - if (address.refsid == sec_address.refsid && !doubled_ids.Contains(address.refsid) && address.refsid != 0) - { - doubled_ids.Add(address.refsid); - } - } - } + for (int i = 0; i < list.KasPersons.Count; i++) + { + var address = list.KasPersons[i]; + for (int j = 0; j < list.KasPersons.Count; j++) + { + if (i == j) continue; + var sec_address = list.KasPersons[j]; - - // delete doubled addresses by refsid - foreach (int id in doubled_ids) + if (address.refsid == sec_address.refsid && !doubled_ids.Contains(address.refsid) && address.refsid != 0) { - // does this remove both of the doubled addresses? - list.KasPersons.Remove(list.KasPersons.FirstOrDefault(x => x.refsid == id)); + doubled_ids.Add(address.refsid); } + } + } - List toRemove = new List(); - foreach (var address in list.KasPersons) + // delete doubled addresses by refsid + foreach (int id in doubled_ids) + { + // does this remove both of the doubled addresses? + list.KasPersons.Remove(list.KasPersons.FirstOrDefault(x => x.refsid == id)); + } + + List toRemove = new List(); + foreach (var address in list.KasPersons) + { + try + { + if (address.PersonError.errors.Contains(AddressCheck.ErrorTypes.NoPLZorPPLZ)) { - try - { - if (address.PersonError.errors.Contains(AddressCheck.ErrorTypes.NoPLZorPPLZ)) - { - toRemove.Add(address.id); - } - else if (address.PersonError.errors.Contains(AddressCheck.ErrorTypes.PlzNotUsable) && - address.PersonError.errors.Contains(AddressCheck.ErrorTypes.PPlzNotUsable)) - { - toRemove.Add(address.id); - } else if (address.PersonError.errors.Contains(AddressCheck.ErrorTypes.PlzNotUsable) && - address.PersonError.warnings.Contains(AddressCheck.WarningTypes.NoPPLZ)) - { - toRemove.Add(address.id); - } - else if (address.PersonError.errors.Contains(AddressCheck.ErrorTypes.PPlzNotUsable) && - address.PersonError.warnings.Contains(AddressCheck.WarningTypes.NoPLZ)) - { - toRemove.Add(address.id); - } - } - catch - { - Console.WriteLine("PersonError not accessible: " + address.id); - } + toRemove.Add(address.id); } - - // delete doubled addresses by refsid - foreach (int id in toRemove) + else if (address.PersonError.errors.Contains(AddressCheck.ErrorTypes.PlzNotUsable) && + address.PersonError.errors.Contains(AddressCheck.ErrorTypes.PPlzNotUsable)) { - // does this remove both of the doubled addresses? - list.KasPersons.Remove(list.KasPersons.Find(x => x.id == id)); + toRemove.Add(address.id); + } else if (address.PersonError.errors.Contains(AddressCheck.ErrorTypes.PlzNotUsable) && + address.PersonError.warnings.Contains(AddressCheck.WarningTypes.NoPPLZ)) + { + toRemove.Add(address.id); } + else if (address.PersonError.errors.Contains(AddressCheck.ErrorTypes.PPlzNotUsable) && + address.PersonError.warnings.Contains(AddressCheck.WarningTypes.NoPLZ)) + { + toRemove.Add(address.id); + } + } + catch + { + Console.WriteLine("PersonError not accessible: " + address.id); + } + } + + // delete doubled addresses by refsid + foreach (int id in toRemove) + { + // does this remove both of the doubled addresses? + list.KasPersons.Remove(list.KasPersons.Find(x => x.id == id)); + } } catch (Exception ex) { diff --git a/Tasks/CombineAddresses.cs b/Tasks/CombineAddresses.cs index 04e2a11..054b7aa 100644 --- a/Tasks/CombineAddresses.cs +++ b/Tasks/CombineAddresses.cs @@ -30,15 +30,15 @@ public class CombineAddresses { var result = await Execute(address_lists,type,comb_type,exportUnused); - if (deleteOld == true) - { - foreach (var list in address_lists) - { - Settings._instance.addressSets.addresses.Remove(list); - } - } - - return result; + if (deleteOld == true) + { + foreach (var list in address_lists) + { + Settings._instance.addressSets.addresses.Remove(list); + } + } + + return result; } catch (Exception ex) { @@ -46,8 +46,6 @@ public class CombineAddresses } return (null,null); - - } private async Task<(KasAddressList, KasAddressList)> Execute(List address_lists, string type, CombineType comb_type, @@ -67,7 +65,6 @@ public class CombineAddresses } return (null,null); - } @@ -144,8 +141,7 @@ public class CombineAddresses result.KasPersons.Add(person); else second_result.KasPersons.Add(person); - - + progress.Increment(); if (progress.LogAction == null) continue; var logMessage = @@ -162,7 +158,6 @@ public class CombineAddresses } return (null,null); - } @@ -211,7 +206,6 @@ public class CombineAddresses } return (null,null); - } @@ -274,7 +268,6 @@ public class CombineAddresses } return (null,null); - } @@ -343,9 +336,7 @@ public class CombineAddresses } return (null,null); - } - } public class Progress diff --git a/Tasks/CsvBuilder.cs b/Tasks/CsvBuilder.cs index 44baee1..2670bfa 100644 --- a/Tasks/CsvBuilder.cs +++ b/Tasks/CsvBuilder.cs @@ -59,8 +59,7 @@ public class CsvBuilder EscapeCsvField(l.abteilung), EscapeCsvField(l.funktionad) })); - - // weitere Cases + return result.ToString(); } @@ -81,6 +80,5 @@ public class CsvBuilder } return ""; - } } diff --git a/Tasks/DataImport.cs b/Tasks/DataImport.cs index e832dbc..5e96636 100644 --- a/Tasks/DataImport.cs +++ b/Tasks/DataImport.cs @@ -130,9 +130,7 @@ public class DataImport var hasProperties = patchType.GetProperties(binding) .Where(p => p.PropertyType == typeof(bool) && p.Name.StartsWith("has_", StringComparison.OrdinalIgnoreCase)) .ToArray(); - - //var last_refsid = 1000000; - + while (!reader.EndOfStream) { var line = reader.ReadLine(); @@ -143,8 +141,6 @@ public class DataImport var fieldValues = new Dictionary(StringComparer.OrdinalIgnoreCase); - //var refsid_existing = false; - foreach (var hasProp in hasProperties) { var fieldName = hasProp.Name.Substring(4); @@ -240,23 +236,10 @@ public class DataImport { Logger.Log($"Error while importing kas address list with patch: {ex.Message}",Logger.LogType.Error); } - - // int GenerateNewRefsid() - // { - // var biggest = last_refsid; - // foreach (var set in Settings._instance.addressSets.addresses) - // foreach (var address in set.KasPersons) - // if (biggest < address.id) - // biggest = address.id + 1; - // - // last_refsid = biggest + 1; - // return last_refsid; - // } return (false, null); } - - + private static int ParseInt(string input) { return int.TryParse(input, out var result) ? result : 0; diff --git a/Tasks/PdfBuilder.cs b/Tasks/PdfBuilder.cs index c919843..6766d6d 100644 --- a/Tasks/PdfBuilder.cs +++ b/Tasks/PdfBuilder.cs @@ -48,8 +48,6 @@ public class PdfBuilder { Logger.Log($"Error while font resolving: {ex.Message}",Logger.LogType.Error); } - - } private static void EnsureFontResolverRegistered() @@ -57,14 +55,12 @@ public class PdfBuilder try { if (GlobalFontSettings.FontResolver != null) return; - //var fontsDir = Path.Combine(AppContext.BaseDirectory, "fonts"); GlobalFontSettings.FontResolver = new StableFontResolver(Global._instance.font_path); } catch (Exception ex) { Logger.Log($"Error while ensuring font resolver register state: {ex.Message}",Logger.LogType.Error); } - } private static string StripStyleSuffix(string name) @@ -84,7 +80,6 @@ public class PdfBuilder } return null; - } @@ -101,11 +96,6 @@ public class PdfBuilder { // Find the AddressSet by ID var addressSet = Settings._instance.addressSets.GetAddressSetByID(addressSetId); - // foreach (var pers in addressSet.KasPersons) - // { - // AddressCreator.CreateFinalMarkdownString(pers.id); - // } - // addressSet.KasPersons = addressSet.KasPersons.OrderBy(x => x.IsGermany()).ThenBy(y => y.used_plz).ToList(); if (addressSet == null) throw new ArgumentException($"AddressSet with ID {addressSetId} not found"); @@ -114,7 +104,6 @@ public class PdfBuilder throw new ArgumentException($"AddressSet with ID {addressSetId} contains no addresses"); // Generate markdown addresses from all KasPersons in the set - //var addresses = new string?[addressSet.KasPersons.Count]; var addresses_german = new List(); var addresses_inter = new List(); @@ -170,8 +159,6 @@ public class PdfBuilder else addresses_inter.Add(addr); } - - if (addresses_german.Count == 0 && addresses_inter.Count == 0) { @@ -188,17 +175,11 @@ public class PdfBuilder { ExportRunningSheets(addressSetId, outputPath); } - //CreateAddressLabelPdfWithPlaceholder(addresses_german, placeholderText, outputPath); - //CreateAddressLabelPdfWithPlaceholder(addresses_inter, placeholderText, output_inter); - - - } catch (Exception ex) { Logger.Log($"Error while creating address label pdf from address set with placeholder: {ex.Message}",Logger.LogType.Error); } - } /// @@ -211,32 +192,31 @@ public class PdfBuilder { try { - if (addresses == null || addresses.Count == 0) - throw new ArgumentException("Addresses array cannot be null or empty"); + if (addresses == null || addresses.Count == 0) + throw new ArgumentException("Addresses array cannot be null or empty"); - var document = new PdfDocument(); + var document = new PdfDocument(); - var addressIndex = 0; - var isFirstCell = true; + var addressIndex = 0; + var isFirstCell = true; - while (addressIndex < addresses.Count || isFirstCell) + while (addressIndex < addresses.Count || isFirstCell) + { + var page = document.AddPage(); + page.Size = PageSize.A4; + + using (var gfx = XGraphics.FromPdfPage(page)) { - var page = document.AddPage(); - page.Size = PageSize.A4; - - using (var gfx = XGraphics.FromPdfPage(page)) - { - DrawPageWithPlaceholder(gfx, addresses, ref addressIndex, ref isFirstCell, placeholderText, pvst); - } + DrawPageWithPlaceholder(gfx, addresses, ref addressIndex, ref isFirstCell, placeholderText, pvst); } + } - document.Save(outputPath); + document.Save(outputPath); } catch (Exception ex) { Logger.Log($"Error while creating address label pdf with placeholder: {ex.Message}",Logger.LogType.Error); } - } @@ -272,7 +252,6 @@ public class PdfBuilder { Logger.Log($"Error while drawing page with placholder: {ex.Message}",Logger.LogType.Error); } - } private void DrawCell(XGraphics gfx, double x, double y, bool pvst, string? address, bool isPlaceholer = false) @@ -298,7 +277,6 @@ public class PdfBuilder { Logger.Log($"Error while drawing cell: {ex.Message}",Logger.LogType.Error); } - } public void InsertDPPressepostImage(XGraphics gfx, XRect cell) @@ -307,7 +285,6 @@ public class PdfBuilder { const double imageSizeX = 47.3; // pt const double imageSizeY = 14.8; // pt - //const double margin = 20.0; // pt var imagePath = Path.Combine("assets", "DP_VerkVermerk_PresseP_NAT.jpg"); @@ -344,7 +321,6 @@ public class PdfBuilder { Logger.Log($"Error while drawing empty cell: {ex.Message}",Logger.LogType.Error); } - } private enum TextStyle @@ -673,7 +649,6 @@ public class PdfBuilder return availableHeightMm / _settings.rowsPerPage; } - public void ExportRunningSheets(int setID, string path) { string international_path = path; @@ -692,7 +667,6 @@ public class PdfBuilder CreateGermanyRunningSheets(setID, path); CreateInternationalRunningSheets(setID, international_path); - } @@ -792,21 +766,8 @@ public class PdfBuilder document.Save(path); } - private void DrawGermanyRunningSheet( - XGraphics gfx, - double x, - double y, - double w, - double h, - KasAddressList list, - dynamic result, - List<(int,string,string,string,int)> grouped_nums, - XFont fontLabel, - XFont fontText, - XFont fontBig, - int pal_nr, - int bundleOnPallet, - int totalBundleNumber){ + private void DrawGermanyRunningSheet(XGraphics gfx, double x, double y, double w, double h, KasAddressList list, dynamic result, List<(int,string,string,string,int)> grouped_nums, XFont fontLabel, XFont fontText, XFont fontBig, int pal_nr, int bundleOnPallet, int totalBundleNumber) + { double line = 1.0; string sender = Customer.GetCustomerByID(list.owner_id)?.sender_address ?? "[Absender]"; @@ -916,7 +877,6 @@ public class PdfBuilder new XRect(midSplit + 5, y + r1 + r2 + 4, w - (midSplit - x) - 10, 14), XStringFormats.TopLeft); - // Bottom left labels // Bottom left labels gfx.DrawString("Einlieferungsdatum:", fontLabel, XBrushes.Black, new XRect(x + 5, y + r1 + r2 + r3 + 4, leftBottomW - 10, 14), @@ -1082,22 +1042,7 @@ public class PdfBuilder document.Save(path); } - private void DrawInternationalRunningSheet( - XGraphics gfx, - double x, - double y, - double w, - double h, - KasAddressList list, - dynamic result, - List<(int,string,string,string,int)> grouped_nums, - XFont fontLabel, - XFont fontText, - XFont fontBig, - int pal_nr, - int bundleOnPallet, - int totalBundleNumber, - string category = "ECONOMY Non-EU") + private void DrawInternationalRunningSheet(XGraphics gfx, double x, double y, double w, double h, KasAddressList list, dynamic result, List<(int,string,string,string,int)> grouped_nums, XFont fontLabel, XFont fontText, XFont fontBig, int pal_nr, int bundleOnPallet, int totalBundleNumber, string category = "ECONOMY Non-EU") { double line = 1.0; @@ -1208,7 +1153,6 @@ public class PdfBuilder new XRect(midSplit + 5, y + r1 + r2 + 4, w - (midSplit - x) - 10, 14), XStringFormats.TopLeft); - // Bottom left labels // Bottom left labels gfx.DrawString("Einlieferungsdatum:", fontLabel, XBrushes.Black, new XRect(x + 5, y + r1 + r2 + r3 + 4, leftBottomW - 10, 14), diff --git a/Wiki/MarkdownRenderer.cs b/Wiki/MarkdownRenderer.cs deleted file mode 100644 index d34a181..0000000 --- a/Wiki/MarkdownRenderer.cs +++ /dev/null @@ -1,140 +0,0 @@ -using System; -using System.Collections.Generic; -using Avalonia.Controls; -using Avalonia.Media; -using Markdig; -using Markdig.Syntax; -using Markdig.Syntax.Inlines; -using System.Text; - -namespace Logof_Client.Wiki; - -public static class MarkdownRenderer -{ - // public static Control Render(string markdown) - // { - // try - // { - // var panel = new StackPanel { Spacing = 6 }; - // if (string.IsNullOrWhiteSpace(markdown)) return panel; - // - // var doc = Markdown.Parse(markdown); - // - // foreach (var block in doc) - // { - // switch (block) - // { - // case HeadingBlock hb: - // { - // var text = GetInlineText(hb.Inline); - // var tb = new TextBlock - // { - // Text = text, - // FontWeight = FontWeight.Bold, - // Margin = new Avalonia.Thickness(0, hb.Level == 1 ? 6 : 2, 0, 2) - // }; - // tb.FontSize = hb.Level switch { 1 => 22, 2 => 18, 3 => 16, _ => 14 }; - // panel.Children.Add(tb); - // break; - // } - // - // case ParagraphBlock pb: - // { - // var text = GetInlineText(pb.Inline); - // var tb = new TextBlock { Text = text, TextWrapping = Avalonia.Media.TextWrapping.Wrap }; - // panel.Children.Add(tb); - // break; - // } - // - // case FencedCodeBlock cb: - // { - // var sb = new StringBuilder(); - // foreach (var line in cb.Lines.Lines) - // { - // sb.Append(line.ToString()); - // } - // var codeBox = new TextBox - // { - // Text = sb.ToString(), - // FontFamily = "Consolas, monospace", - // IsReadOnly = true, - // AcceptsReturn = true - // }; - // panel.Children.Add(codeBox); - // break; - // } - // - // case ListBlock lb: - // { - // var sp = new StackPanel { Spacing = 2 }; - // var number = 1; - // foreach (var item in lb) - // { - // if (item is ListItemBlock lib) - // { - // var itemText = new StringBuilder(); - // foreach (var sub in lib) - // { - // if (sub is ParagraphBlock pp) - // itemText.Append(GetInlineText(pp.Inline)); - // } - // var tb = new TextBlock { Text = (lb.IsOrdered ? (number++ + ". ") : "• ") + itemText.ToString() }; - // sp.Children.Add(tb); - // } - // } - // panel.Children.Add(sp); - // break; - // } - // - // default: - // { - // // fallback: raw text - // panel.Children.Add(new TextBlock { Text = block.ToString() }); - // break; - // } - // } - // } - // - // return panel; - // } catch (Exception ex) { Logger.Log($"Error while : {ex.Message}",Logger.LogType.Error);} - // - // return new Panel(); - // } - // - // private static string GetInlineText(ContainerInline? container) - // { - // try - // { - // if (container == null) return string.Empty; - // var sb = new StringBuilder(); - // foreach (var inline in container) - // { - // switch (inline) - // { - // case LiteralInline li: - // sb.Append(li.Content.ToString()); - // break; - // case EmphasisInline ei: - // sb.Append(GetInlineText(ei)); - // break; - // case CodeInline ci: - // sb.Append(ci.Content); - // break; - // case LinkInline li: - // sb.Append(GetInlineText(li)); - // break; - // case LineBreakInline: - // sb.Append("\n"); - // break; - // default: - // sb.Append(inline.ToString()); - // break; - // } - // } - // - // return sb.ToString(); - // } catch (Exception ex) { Logger.Log($"Error while : {ex.Message}",Logger.LogType.Error);} - // - // return null; - // } -}