From 63d430dd720f23a3f5e909fa743e817d247a1b2c Mon Sep 17 00:00:00 2001 From: Elias Fierke Date: Thu, 9 Oct 2025 10:21:42 +0200 Subject: [PATCH] [chore:] combine split into four possible variants of merging --- MainWindow.axaml | 47 ++- MainWindow.axaml.cs | 900 ++++++++++++++++++++++---------------------- 2 files changed, 502 insertions(+), 445 deletions(-) diff --git a/MainWindow.axaml b/MainWindow.axaml index b92b3cc..823fbd3 100644 --- a/MainWindow.axaml +++ b/MainWindow.axaml @@ -3,6 +3,7 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" + MinWidth="1000" MinHeight="600" x:Class="Logof_Client.MainWindow" WindowState="Maximized" Icon="assets/icon.ico" Title="Logof Client"> @@ -145,9 +146,53 @@ - + + + + + + + + + diff --git a/MainWindow.axaml.cs b/MainWindow.axaml.cs index 8957725..77ad3ec 100644 --- a/MainWindow.axaml.cs +++ b/MainWindow.axaml.cs @@ -1,445 +1,457 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; -using Avalonia.Controls; -using Avalonia.Interactivity; -using Avalonia.Platform.Storage; - -namespace Logof_Client; - -public partial class MainWindow : Window -{ - public static MainWindow _instance; - public Uri filePath; - - public MainWindow() - { - InitializeComponent(); - _instance = this; - WindowState = WindowState.Maximized; - Global.Load(); - Settings.Load(); - } - - private async void StartAddressCheck(KasAddressList addresses) - { - //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(addresses); - - - progressWindow.Close(); - - - new ResultWindow(result, addresses).Show(); - //await MessageBox.Show(_instance, $"{result.Count} Einträge fehlerhaft.", "Fertig"); - } - - private async void StartAddressRepair(Uri path) - { - var addresses = DataImport.ImportKasAddressList(path); // Ihr Code hier - var progressWindow = new ProgressWindow(); - - progressWindow.Show(_instance); - - var processor = new AddressRepair(progressWindow); - //var result = await processor.Perform(addresses.Item2, errors); - - - progressWindow.Close(); - - - //new ResultWindow(result, addresses.Item2).Show(); - //await MessageBox.Show(_instance, $"{result.Count} Einträge fehlerhaft.", "Fertig"); - } - - private void MnuExit_OnClick(object? sender, RoutedEventArgs e) - { - Environment.Exit(0); - } - - private void MnuAbout_OnClick(object? sender, RoutedEventArgs e) - { - throw new NotImplementedException(); - } - - private void MnuSettings_OnClick(object? sender, RoutedEventArgs e) - { - throw new NotImplementedException(); - } - - private void MnuHelp_OnClick(object? sender, RoutedEventArgs e) - { - throw new NotImplementedException(); - } - - private void MnuGithub_OnClick(object? sender, RoutedEventArgs e) - { - throw new NotImplementedException(); - } - - private async void BtnChooseFile_OnClick(object? sender, RoutedEventArgs e) - { - var topLevel = GetTopLevel(this); - var file = await topLevel!.StorageProvider.OpenFilePickerAsync(new FilePickerOpenOptions - { - Title = "KAS-CSV-Datei auswählen", - AllowMultiple = false, - FileTypeFilter = new[] - { - new FilePickerFileType(".csv-Datei") - { - Patterns = new[] { "*.csv" } - //Patterns = new[] { "*" } - } - } - }); - - if (file == null) return; - //TbFilename.Text = file[0].Path.ToString(); - filePath = file[0].Path; - } - - private void BtnCheck_OnClick(object? sender, RoutedEventArgs e) - { - if (LstCustomerAdressSets.SelectedIndex == -1) - { - MessageBox.Show(null, "Bitte zunächst ein Adress-Set auswählen", "Kein Adress-Set ausgewählt"); - return; - } - - var set = new KasAddressList(""); - foreach (var adset in Settings._instance.addressSets.addresses) - if (adset.Name == LstCustomerAdressSets.SelectedItem.ToString()) - set = adset; - - StartAddressCheck(set); - // var result = DataImport.ImportKasAddressList(filePath); - // if (result.Item1) - // { - // var check_result = new AddressCheck().Perform(result.Item2); - // foreach (var item in check_result.Result) - // { - // Console.WriteLine(); - // Console.Write(item.Item1 + " "); - // foreach (var error in item.Item2) Console.Write(error + ", "); - // } - // } - } - - private void BtnCombine_OnClick(object? sender, RoutedEventArgs e) - { - if (filePath == null) - { - MessageBox.Show(null, "Bitte zunächst eine Datei auswählen", "Datei fehlt"); - return; - } - - StartCombine(filePath); - } - - private async void StartCombine(Uri path) - { - var addresses = DataImport.ImportKasAddressList(path); - var progressWindow = new ProgressWindow(); - var address_list = new List { addresses.Item2 }; - - var topLevel = GetTopLevel(this); - var file = await topLevel!.StorageProvider.OpenFilePickerAsync(new FilePickerOpenOptions - { - Title = "Weitere KAS-CSV-Dateien auswählen", - AllowMultiple = true, - FileTypeFilter = new[] - { - new FilePickerFileType(".csv-Dateien") - { - Patterns = new[] { "*.csv" } - //Patterns = new[] { "*" } - } - } - }); - - if (file == null) return; - - //filePath = file[0].Path; - foreach (var f in file) address_list.Add(DataImport.ImportKasAddressList(f.Path).Item2); - - - progressWindow.Show(_instance); - - var processor = new CombineAddresses(progressWindow); - var result = await processor.Perform(address_list); - - - progressWindow.Close(); - 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()); - } - - private async Task OpenSettingsSaveAsDialog() - { - var settingsFileName = "KAS-Adress-Liste"; - - try - { - var filePicker = new SaveFileDialog - { - Title = "Datei speichern...", - InitialFileName = $"{settingsFileName}.csv", - DefaultExtension = ".csv", - Filters = new List - { - new() { Name = "CSV-Datei", Extensions = { "csv" } } - } - }; - - var settingsSavePath = await filePicker.ShowAsync(this); - if (settingsSavePath == null) - { - } - - return settingsSavePath; - //SettingsManager.Save(settingsSavePath); - //Logger.Log("Settings saved at " + settingsSavePath); - } - catch (Exception ex) - { - //Logger.Log("Saving file not successful: " + ex.Message, Logger.LogType.Error); - await MessageBox.Show(this, ex.Message, "Fehler beim Speichern der Datei"); - return null; - } - } - - private void BtnSettingsAddCustomer_OnClick(object? sender, RoutedEventArgs e) - { - Settings._instance.customers.customers.Add(new Customer()); - TbSettingsCustomerDescription.Text = ""; - TbSettingsCustomerName.Text = ""; - TbSettingsCustomerPatchInfo.Text = ""; - //Settings.Save(); - //RefreshCustomerItems(); - } - - private void TbSettingsCustomerName_OnTextChanged(object? sender, TextChangedEventArgs e) - { - if (LstSettingsCustomers.SelectedIndex == null || LstSettingsCustomers.SelectedIndex == -1) return; - foreach (var customer in Settings._instance.customers.customers) - if (customer.ID == Settings._instance.customers.current) - customer.name = TbSettingsCustomerName.Text; - //Settings.Save(); - //RefreshCustomerItems(); - } - - private void LstSettingsCustomers_OnSelectionChanged(object? sender, SelectionChangedEventArgs e) - { - if (LstSettingsCustomers.SelectedIndex < 0) return; - Settings._instance.customers.current = - Customer.GetIDByCustomerListItem(LstSettingsCustomers.SelectedItems[0].ToString()); - foreach (var customer in Settings._instance.customers.customers) - if (customer.ID == Settings._instance.customers.current) - { - TbSettingsCustomerDescription.Text = customer.description; - TbSettingsCustomerName.Text = customer.name; - TbSettingsCustomerCsvSeparator.Text = customer.separator.ToString(); - if (customer.patch != null) - TbSettingsCustomerPatchInfo.Text = customer.patch.ToString(); - else - TbSettingsCustomerPatchInfo.Text = ""; - } - } - - public void RefreshCustomerItems() - { - if (LstCustomers.Items.Count > 0) - LstCustomers.SelectedIndex = -1; - else - LstCustomers.SelectedItem = null; - - LstCustomers.Items.Clear(); - if (LstSettingsCustomers.Items.Count > 0) - LstSettingsCustomers.SelectedIndex = -1; - else - LstSettingsCustomers.SelectedItem = null; - - LstSettingsCustomers.Items.Clear(); - foreach (var customer in Settings._instance.customers.customers) - { - LstCustomers.Items.Add(customer.ID + " - " + customer.name); - LstSettingsCustomers.Items.Add(customer.ID + " - " + customer.name); - } - } - - private void TbSettingsCustomerDescription_OnTextChanged(object? sender, TextChangedEventArgs e) - { - if (LstSettingsCustomers.SelectedIndex == null || LstSettingsCustomers.SelectedIndex == -1) return; - foreach (var customer in Settings._instance.customers.customers) - if (customer.ID == Settings._instance.customers.current) - customer.description = TbSettingsCustomerDescription.Text; - //Settings.Save(); - } - - private void BtnSettingsSaveCustomerData_OnClick(object? sender, RoutedEventArgs e) - { - Settings.Save(); - RefreshCustomerItems(); - } - - private void LstCustomers_OnSelectionChanged(object? sender, SelectionChangedEventArgs e) - { - if (LstCustomers.SelectedItems == null || LstCustomers.SelectedIndex == -1) return; - var customer_id = int.Parse(LstCustomers.SelectedItem.ToString().Split(" - ")[0]); - RefreshAddressSetListItems(customer_id); - } - - private async void BtnCustomerAddressSetImport_OnClick(object? sender, RoutedEventArgs e) - { - var opts = new FilePickerOpenOptions(); - opts.Title = "Address-Set importieren..."; - opts.AllowMultiple = false; - - var type = new FilePickerFileType("CSV-Dateien (*.csv)"); - type.Patterns = new[] { "*.csv" }; - 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.ID == Customer.GetIDByCustomerListItem(LstCustomers.SelectedItems[0].ToString())) - { - if (customer.patch == null) - { - var got = DataImport.ImportKasAddressList(selected_path, null, customer.separator); - if (!got.Item1) - { - Console.WriteLine("Error while importing. Please try another file."); - } - else - { - 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 - { - var got = DataImport.ImportKasAddressList(selected_path, customer.patch, customer.separator); - if (!got.Item1) - { - Console.WriteLine("Error while importing. Please try another file."); - } - else - { - 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); - } - } - - - Settings.Save(); - } - - public void RefreshAddressSetListItems(int customer_id) - { - if (LstCustomers.SelectedIndex < 0) return; - LstCustomerAdressSets.SelectedItems = null; - LstCustomerAdressSets.Items.Clear(); - foreach (var k in Settings._instance.addressSets.addresses) - foreach (var customer in Settings._instance.customers.customers) - if (customer.ID == k.owner_id && customer.ID == customer_id) - LstCustomerAdressSets.Items.Add(k.Name); - } - - private void LstCustomerAdressSets_OnSelectionChanged(object? sender, SelectionChangedEventArgs e) - { - if (LstCustomerAdressSets.SelectedItems == null || LstCustomerAdressSets.SelectedIndex == -1) - { - BtnCheck.IsEnabled = false; - BtnCombine.IsEnabled = false; - - BtnGenerateLabels.IsEnabled = false; - BtnRepair.IsEnabled = false; - BtnShorten.IsEnabled = false; - } - else - { - BtnCheck.IsEnabled = true; - BtnCombine.IsEnabled = true; - - // BtnGenerateLabels.IsEnabled = true; - // BtnRepair.IsEnabled = true; - // BtnShorten.IsEnabled = true; - } - } - - private async void BtnSettingsImportCustomerAddressPatch_OnClick(object? sender, RoutedEventArgs e) - { - if (LstSettingsCustomers.SelectedIndex == null || LstSettingsCustomers.SelectedIndex == -1) return; - - var opts = new FilePickerOpenOptions(); - opts.Title = "Address-Patch für " + LstSettingsCustomers.SelectedItems[0] + "importieren..."; - opts.AllowMultiple = false; - - var type = new FilePickerFileType("ADPAC-Dateien (*.adpac)"); - type.Patterns = new[] { "*.adpac" }; - 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.GetIDByCustomerListItem(LstSettingsCustomers.SelectedItems[0].ToString())) - customer.patch = AddressPatch.Import(selected_path); - - - Settings.Save(); - } - - private void TbSettingsCustomerCsvSeparator_OnTextChanged(object? sender, TextChangedEventArgs e) - { - if (LstSettingsCustomers.SelectedIndex == null || LstSettingsCustomers.SelectedIndex == -1) return; - var sep = !string.IsNullOrEmpty(TbSettingsCustomerCsvSeparator.Text) - ? TbSettingsCustomerCsvSeparator.Text - : ","; - foreach (var customer in Settings._instance.customers.customers) - if (customer.ID == Settings._instance.customers.current) - try - { - customer.separator = Convert.ToChar(sep); - } - catch (FormatException ex) - { - MessageBox.Show(this, "Error while converting: " + ex.Message, "Could not parse"); - } - catch (Exception ex) - { - MessageBox.Show(this, "Unknown Error: " + ex.Message, "Error"); - } - } +using System; +using System.Collections.Generic; +using System.IO; +using System.Threading.Tasks; +using Avalonia.Controls; +using Avalonia.Interactivity; +using Avalonia.Platform.Storage; + +namespace Logof_Client; + +public partial class MainWindow : Window +{ + public static MainWindow _instance; + public Uri filePath; + + public MainWindow() + { + InitializeComponent(); + _instance = this; + WindowState = WindowState.Maximized; + Global.Load(); + Settings.Load(); + } + + private async void StartAddressCheck(KasAddressList addresses) + { + //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(addresses); + + + progressWindow.Close(); + + + new ResultWindow(result, addresses).Show(); + //await MessageBox.Show(_instance, $"{result.Count} Einträge fehlerhaft.", "Fertig"); + } + + private async void StartAddressRepair(Uri path) + { + var addresses = DataImport.ImportKasAddressList(path); // Ihr Code hier + var progressWindow = new ProgressWindow(); + + progressWindow.Show(_instance); + + var processor = new AddressRepair(progressWindow); + //var result = await processor.Perform(addresses.Item2, errors); + + + progressWindow.Close(); + + + //new ResultWindow(result, addresses.Item2).Show(); + //await MessageBox.Show(_instance, $"{result.Count} Einträge fehlerhaft.", "Fertig"); + } + + private void MnuExit_OnClick(object? sender, RoutedEventArgs e) + { + Environment.Exit(0); + } + + private void MnuAbout_OnClick(object? sender, RoutedEventArgs e) + { + throw new NotImplementedException(); + } + + private void MnuSettings_OnClick(object? sender, RoutedEventArgs e) + { + throw new NotImplementedException(); + } + + private void MnuHelp_OnClick(object? sender, RoutedEventArgs e) + { + throw new NotImplementedException(); + } + + private void MnuGithub_OnClick(object? sender, RoutedEventArgs e) + { + throw new NotImplementedException(); + } + + private async void BtnChooseFile_OnClick(object? sender, RoutedEventArgs e) + { + var topLevel = GetTopLevel(this); + var file = await topLevel!.StorageProvider.OpenFilePickerAsync(new FilePickerOpenOptions + { + Title = "KAS-CSV-Datei auswählen", + AllowMultiple = false, + FileTypeFilter = new[] + { + new FilePickerFileType(".csv-Datei") + { + Patterns = new[] { "*.csv" } + //Patterns = new[] { "*" } + } + } + }); + + if (file == null) return; + //TbFilename.Text = file[0].Path.ToString(); + filePath = file[0].Path; + } + + private void BtnCheck_OnClick(object? sender, RoutedEventArgs e) + { + MakeCalcManVisible(); + if (LstCustomerAdressSets.SelectedIndex == -1) + { + MessageBox.Show(null, "Bitte zunächst ein Adress-Set auswählen", "Kein Adress-Set ausgewählt"); + return; + } + + var set = new KasAddressList(""); + foreach (var adset in Settings._instance.addressSets.addresses) + if (adset.Name == LstCustomerAdressSets.SelectedItem.ToString()) + set = adset; + + StartAddressCheck(set); + // var result = DataImport.ImportKasAddressList(filePath); + // if (result.Item1) + // { + // var check_result = new AddressCheck().Perform(result.Item2); + // foreach (var item in check_result.Result) + // { + // Console.WriteLine(); + // Console.Write(item.Item1 + " "); + // foreach (var error in item.Item2) Console.Write(error + ", "); + // } + // } + } + + private void BtnCombine_OnClick(object? sender, RoutedEventArgs e) + { + GrdCalcMan.IsVisible = false; + GrdCombineTypes.IsVisible = true; + } + + private void MakeCalcManVisible() + { + GrdCalcMan.IsVisible = true; + GrdCombineTypes.IsVisible = false; + } + + private async void StartCombine(Uri path) + { + MakeCalcManVisible(); + var addresses = DataImport.ImportKasAddressList(path); + var progressWindow = new ProgressWindow(); + var address_list = new List { addresses.Item2 }; + + var topLevel = GetTopLevel(this); + var file = await topLevel!.StorageProvider.OpenFilePickerAsync(new FilePickerOpenOptions + { + Title = "Weitere KAS-CSV-Dateien auswählen", + AllowMultiple = true, + FileTypeFilter = new[] + { + new FilePickerFileType(".csv-Dateien") + { + Patterns = new[] { "*.csv" } + //Patterns = new[] { "*" } + } + } + }); + + if (file == null) return; + + //filePath = file[0].Path; + foreach (var f in file) address_list.Add(DataImport.ImportKasAddressList(f.Path).Item2); + + + progressWindow.Show(_instance); + + var processor = new CombineAddresses(progressWindow); + var result = await processor.Perform(address_list); + + + progressWindow.Close(); + 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()); + } + + private async Task OpenSettingsSaveAsDialog() + { + var settingsFileName = "KAS-Adress-Liste"; + + try + { + var filePicker = new SaveFileDialog + { + Title = "Datei speichern...", + InitialFileName = $"{settingsFileName}.csv", + DefaultExtension = ".csv", + Filters = new List + { + new() { Name = "CSV-Datei", Extensions = { "csv" } } + } + }; + + var settingsSavePath = await filePicker.ShowAsync(this); + if (settingsSavePath == null) + { + } + + return settingsSavePath; + //SettingsManager.Save(settingsSavePath); + //Logger.Log("Settings saved at " + settingsSavePath); + } + catch (Exception ex) + { + //Logger.Log("Saving file not successful: " + ex.Message, Logger.LogType.Error); + await MessageBox.Show(this, ex.Message, "Fehler beim Speichern der Datei"); + return null; + } + } + + private void BtnSettingsAddCustomer_OnClick(object? sender, RoutedEventArgs e) + { + Settings._instance.customers.customers.Add(new Customer()); + TbSettingsCustomerDescription.Text = ""; + TbSettingsCustomerName.Text = ""; + TbSettingsCustomerPatchInfo.Text = ""; + //Settings.Save(); + //RefreshCustomerItems(); + } + + private void TbSettingsCustomerName_OnTextChanged(object? sender, TextChangedEventArgs e) + { + if (LstSettingsCustomers.SelectedIndex == null || LstSettingsCustomers.SelectedIndex == -1) return; + foreach (var customer in Settings._instance.customers.customers) + if (customer.ID == Settings._instance.customers.current) + customer.name = TbSettingsCustomerName.Text; + //Settings.Save(); + //RefreshCustomerItems(); + } + + private void LstSettingsCustomers_OnSelectionChanged(object? sender, SelectionChangedEventArgs e) + { + if (LstSettingsCustomers.SelectedIndex < 0) return; + Settings._instance.customers.current = + Customer.GetIDByCustomerListItem(LstSettingsCustomers.SelectedItems[0].ToString()); + foreach (var customer in Settings._instance.customers.customers) + if (customer.ID == Settings._instance.customers.current) + { + TbSettingsCustomerDescription.Text = customer.description; + TbSettingsCustomerName.Text = customer.name; + TbSettingsCustomerCsvSeparator.Text = customer.separator.ToString(); + if (customer.patch != null) + TbSettingsCustomerPatchInfo.Text = customer.patch.ToString(); + else + TbSettingsCustomerPatchInfo.Text = ""; + } + } + + public void RefreshCustomerItems() + { + if (LstCustomers.Items.Count > 0) + LstCustomers.SelectedIndex = -1; + else + LstCustomers.SelectedItem = null; + + LstCustomers.Items.Clear(); + if (LstSettingsCustomers.Items.Count > 0) + LstSettingsCustomers.SelectedIndex = -1; + else + LstSettingsCustomers.SelectedItem = null; + + LstSettingsCustomers.Items.Clear(); + foreach (var customer in Settings._instance.customers.customers) + { + LstCustomers.Items.Add(customer.ID + " - " + customer.name); + LstSettingsCustomers.Items.Add(customer.ID + " - " + customer.name); + } + } + + private void TbSettingsCustomerDescription_OnTextChanged(object? sender, TextChangedEventArgs e) + { + if (LstSettingsCustomers.SelectedIndex == null || LstSettingsCustomers.SelectedIndex == -1) return; + foreach (var customer in Settings._instance.customers.customers) + if (customer.ID == Settings._instance.customers.current) + customer.description = TbSettingsCustomerDescription.Text; + //Settings.Save(); + } + + private void BtnSettingsSaveCustomerData_OnClick(object? sender, RoutedEventArgs e) + { + Settings.Save(); + RefreshCustomerItems(); + } + + private void LstCustomers_OnSelectionChanged(object? sender, SelectionChangedEventArgs e) + { + MakeCalcManVisible(); + if (LstCustomers.SelectedItems == null || LstCustomers.SelectedIndex == -1) return; + var customer_id = int.Parse(LstCustomers.SelectedItem.ToString().Split(" - ")[0]); + RefreshAddressSetListItems(customer_id); + } + + private async void BtnCustomerAddressSetImport_OnClick(object? sender, RoutedEventArgs e) + { + MakeCalcManVisible(); + var opts = new FilePickerOpenOptions(); + opts.Title = "Address-Set importieren..."; + opts.AllowMultiple = false; + + var type = new FilePickerFileType("CSV-Dateien (*.csv)"); + type.Patterns = new[] { "*.csv" }; + 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.ID == Customer.GetIDByCustomerListItem(LstCustomers.SelectedItems[0].ToString())) + { + if (customer.patch == null) + { + var got = DataImport.ImportKasAddressList(selected_path, null, customer.separator); + if (!got.Item1) + { + Console.WriteLine("Error while importing. Please try another file."); + } + else + { + 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 + { + var got = DataImport.ImportKasAddressList(selected_path, customer.patch, customer.separator); + if (!got.Item1) + { + Console.WriteLine("Error while importing. Please try another file."); + } + else + { + 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); + } + } + + + Settings.Save(); + } + + public void RefreshAddressSetListItems(int customer_id) + { + BtnCheck.IsEnabled = false; + BtnCombine.IsEnabled = false; + BtnGenerateLabels.IsEnabled = false; + BtnRepair.IsEnabled = false; + BtnShorten.IsEnabled = false; + + if (LstCustomers.SelectedIndex < 0) return; + + LstCustomerAdressSets.SelectedItems = null; + LstCustomerAdressSets.Items.Clear(); + foreach (var k in Settings._instance.addressSets.addresses) + foreach (var customer in Settings._instance.customers.customers) + if (customer.ID == k.owner_id && customer.ID == customer_id) + LstCustomerAdressSets.Items.Add(k.Name); + } + + private void LstCustomerAdressSets_OnSelectionChanged(object? sender, SelectionChangedEventArgs e) + { + MakeCalcManVisible(); + if (LstCustomerAdressSets.SelectedItems == null || LstCustomerAdressSets.SelectedIndex == -1) + { + BtnCheck.IsEnabled = false; + BtnCombine.IsEnabled = false; + BtnGenerateLabels.IsEnabled = false; + BtnRepair.IsEnabled = false; + BtnShorten.IsEnabled = false; + } + else + { + BtnCheck.IsEnabled = true; + BtnCombine.IsEnabled = true; + + // BtnGenerateLabels.IsEnabled = true; + // BtnRepair.IsEnabled = true; + // BtnShorten.IsEnabled = true; + } + } + + private async void BtnSettingsImportCustomerAddressPatch_OnClick(object? sender, RoutedEventArgs e) + { + if (LstSettingsCustomers.SelectedIndex == null || LstSettingsCustomers.SelectedIndex == -1) return; + + var opts = new FilePickerOpenOptions(); + opts.Title = "Address-Patch für " + LstSettingsCustomers.SelectedItems[0] + "importieren..."; + opts.AllowMultiple = false; + + var type = new FilePickerFileType("ADPAC-Dateien (*.adpac)"); + type.Patterns = new[] { "*.adpac" }; + 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.GetIDByCustomerListItem(LstSettingsCustomers.SelectedItems[0].ToString())) + customer.patch = AddressPatch.Import(selected_path); + + + Settings.Save(); + } + + private void TbSettingsCustomerCsvSeparator_OnTextChanged(object? sender, TextChangedEventArgs e) + { + if (LstSettingsCustomers.SelectedIndex == null || LstSettingsCustomers.SelectedIndex == -1) return; + var sep = !string.IsNullOrEmpty(TbSettingsCustomerCsvSeparator.Text) + ? TbSettingsCustomerCsvSeparator.Text + : ","; + foreach (var customer in Settings._instance.customers.customers) + if (customer.ID == Settings._instance.customers.current) + try + { + customer.separator = Convert.ToChar(sep); + } + catch (FormatException ex) + { + MessageBox.Show(this, "Error while converting: " + ex.Message, "Could not parse"); + } + catch (Exception ex) + { + MessageBox.Show(this, "Unknown Error: " + ex.Message, "Error"); + } + } } \ No newline at end of file