From bc6148624cbb316ac451e8ffb2388b6236eaf5aa Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner Date: Fri, 8 Sep 2023 12:44:29 +0200 Subject: [PATCH] DeliveryAdminWindow: Add export option for BKI --- Elwig/Helpers/Export/Bki.cs | 4 ++-- Elwig/Helpers/Utils.cs | 2 +- Elwig/Windows/DeliveryAdminWindow.xaml | 3 +-- Elwig/Windows/DeliveryAdminWindow.xaml.cs | 27 +++++++++++++++++++++-- 4 files changed, 29 insertions(+), 7 deletions(-) diff --git a/Elwig/Helpers/Export/Bki.cs b/Elwig/Helpers/Export/Bki.cs index cba5080..007fbc6 100644 --- a/Elwig/Helpers/Export/Bki.cs +++ b/Elwig/Helpers/Export/Bki.cs @@ -6,7 +6,7 @@ using System; namespace Elwig.Helpers.Export { - using Row = Tuple<(string, string?, string?, string?, string, int, string, int), (string, int, string, string, string, int, string, double, double)>; + using Row = Tuple<(string?, string?, string?, string?, string, int, string, int), (string, int, string, string, string, int, string, double, double)>; public class Bki : Csv { @@ -38,7 +38,7 @@ namespace Elwig.Helpers.Export { List rows = new(); while (await r.ReadAsync()) { rows.Add(new( - (r.GetString(0), r.IsDBNull(1) ? null : r.GetString(1), r.IsDBNull(2) ? null : r.GetString(2), r.IsDBNull(3) ? null : r.GetString(3), r.GetString(4), r.GetInt32(5), r.GetString(6), r.GetInt32(7)), + (r.IsDBNull(0) ? null : r.GetString(0), r.IsDBNull(1) ? null : r.GetString(1), r.IsDBNull(2) ? null : r.GetString(2), r.IsDBNull(3) ? null : r.GetString(3), r.GetString(4), r.GetInt32(5), r.GetString(6), r.GetInt32(7)), (r.GetString(8), r.GetInt32(9), r.GetString(10), r.GetString(11), r.GetString(12), r.GetInt32(13), r.GetString(14), r.GetDouble(15), r.GetDouble(16)) )); } diff --git a/Elwig/Helpers/Utils.cs b/Elwig/Helpers/Utils.cs index f2fbb24..b90dd04 100644 --- a/Elwig/Helpers/Utils.cs +++ b/Elwig/Helpers/Utils.cs @@ -305,7 +305,7 @@ namespace Elwig.Helpers { } public static (string, string?) SplitName(string fullName, string? familyName) { - if (familyName == null) return (fullName, null); + if (familyName == null || familyName == "") return (fullName, null); var p0 = fullName.ToLower().IndexOf(familyName.ToLower()); if (p0 == -1) return (fullName, null); var p1 = fullName.IndexOf(" und "); diff --git a/Elwig/Windows/DeliveryAdminWindow.xaml b/Elwig/Windows/DeliveryAdminWindow.xaml index f206f3d..310aef7 100644 --- a/Elwig/Windows/DeliveryAdminWindow.xaml +++ b/Elwig/Windows/DeliveryAdminWindow.xaml @@ -65,8 +65,7 @@ Click="Menu_Print_PrintDeliveryNote_Click"/> - + diff --git a/Elwig/Windows/DeliveryAdminWindow.xaml.cs b/Elwig/Windows/DeliveryAdminWindow.xaml.cs index e61a7cd..7ffa6e4 100644 --- a/Elwig/Windows/DeliveryAdminWindow.xaml.cs +++ b/Elwig/Windows/DeliveryAdminWindow.xaml.cs @@ -1,8 +1,10 @@ using Elwig.Documents; using Elwig.Helpers; +using Elwig.Helpers.Export; using Elwig.Models; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.ChangeTracking; +using Microsoft.Win32; using System; using System.Collections.Generic; using System.Linq; @@ -118,8 +120,20 @@ namespace Elwig.Windows { await doc.Print(); } - private void Menu_Export_Bki_Click(object sender, RoutedEventArgs evt) { - // TODO export Traubentransportscheinliste + private async void Menu_Export_Bki_Click(object sender, RoutedEventArgs evt) { + if (sender is not MenuItem m) return; + var year = int.Parse(m.Header.ToString()?.Split(" ")[^1] ?? Utils.CurrentLastSeason.ToString()); + var d = new SaveFileDialog() { + FileName = $"{App.Client.NameToken}-Traubentransportscheinliste-{year}", + DefaultExt = Bki.FileExtension, + Title = $"Traubentransportscheinliste (BKI) speichern unter - Elwig" + }; + if (d.ShowDialog() == true) { + Mouse.OverrideCursor = Cursors.Wait; + using var file = new Bki(d.FileName); + await file.ExportAsync(year); + Mouse.OverrideCursor = null; + } } private void OnSecondPassed(object? sender, EventArgs? evt) { @@ -386,6 +400,15 @@ namespace Elwig.Windows { Title = $"Lieferungen - {Member.AdministrativeName} - Elwig"; } + Menu_Export_Bki.Items.Clear(); + foreach (var s in await Context.Seasons.OrderByDescending(s => s.Year).ToListAsync()) { + var i = new MenuItem { + Header = $"Season {s.Year}", + }; + i.Click += Menu_Export_Bki_Click; + Menu_Export_Bki.Items.Add(i); + } + await RefreshDeliveryList(); var d = DeliveryList.SelectedItem as Delivery; var y = d?.Year ?? Utils.CurrentLastSeason;