From daddd069a3f20e1b18ca1fbaff503e0811b68fd4 Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner Date: Mon, 16 Oct 2023 23:25:22 +0200 Subject: [PATCH] MemberAdminWindow: Add more letterhead sorting options --- Elwig/Windows/MemberAdminWindow.xaml | 2 + Elwig/Windows/MemberAdminWindow.xaml.cs | 53 ++++++++++++++----------- 2 files changed, 31 insertions(+), 24 deletions(-) diff --git a/Elwig/Windows/MemberAdminWindow.xaml b/Elwig/Windows/MemberAdminWindow.xaml index ab37d89..3f82cbf 100644 --- a/Elwig/Windows/MemberAdminWindow.xaml +++ b/Elwig/Windows/MemberAdminWindow.xaml @@ -59,6 +59,8 @@ Click="Menu_Print_Letterheads_MgNr_Click"/> + diff --git a/Elwig/Windows/MemberAdminWindow.xaml.cs b/Elwig/Windows/MemberAdminWindow.xaml.cs index 7f5528c..353ba54 100644 --- a/Elwig/Windows/MemberAdminWindow.xaml.cs +++ b/Elwig/Windows/MemberAdminWindow.xaml.cs @@ -291,7 +291,7 @@ namespace Elwig.Windows { } } - private async void Menu_Print_Letterheads_MgNr_Click(object sender, RoutedEventArgs evt) { + private async Task PrintLetterheads(int ordering) { var n = await Context.Members.CountAsync(m => m.IsActive); var res = MessageBox.Show( $"Sollen wirklich {n} Seiten gedruckt werden?", "Ausdruck Bestätigen", @@ -299,10 +299,25 @@ namespace Elwig.Windows { if (res != MessageBoxResult.Yes) return; Mouse.OverrideCursor = Cursors.AppStarting; - using var doc = await Document.Merge(Context.Members - .Where(m => m.IsActive && m.ContactViaPost) - .OrderBy(m => m.MgNr) - .Select(m => new Letterhead(m))); + var members = Context.Members.Where(m => m.IsActive && m.ContactViaPost); + switch (ordering) { + case 0: members = members + .OrderBy(m => m.MgNr); + break; + case 1: members = members + .OrderBy(m => m.FamilyName) + .ThenBy(m => m.GivenName) + .ThenBy(m => m.MgNr); + break; + case 2: members = members + .OrderBy(m => m.PostalDest.AtPlz.Plz) + .ThenBy(m => m.PostalDest.AtPlz.Ort.Name) + .ThenBy(m => m.FamilyName) + .ThenBy(m => m.GivenName) + .ThenBy(m => m.MgNr); + break; + } + using var doc = await Document.Merge((await members.ToListAsync()).Select(m => new Letterhead(m))); await doc.Generate(); Mouse.OverrideCursor = null; if (App.Config.Debug) { @@ -312,26 +327,16 @@ namespace Elwig.Windows { } } + private async void Menu_Print_Letterheads_MgNr_Click(object sender, RoutedEventArgs evt) { + await PrintLetterheads(0); + } + private async void Menu_Print_Letterheads_Name_Click(object sender, RoutedEventArgs evt) { - var n = await Context.Members.CountAsync(m => m.IsActive); - var res = MessageBox.Show( - $"Sollen wirklich {n} Seiten gedruckt werden?", "Ausdruck Bestätigen", - MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No); - if (res != MessageBoxResult.Yes) - return; - Mouse.OverrideCursor = Cursors.AppStarting; - using var doc = await Document.Merge(Context.Members - .Where(m => m.IsActive && m.ContactViaPost) - .OrderBy(m => m.FamilyName) - .ThenBy(m => m.GivenName) - .Select(m => new Letterhead(m))); - await doc.Generate(); - Mouse.OverrideCursor = null; - if (App.Config.Debug) { - doc.Show(); - } else { - await doc.Print(); - } + await PrintLetterheads(1); + } + + private async void Menu_Print_Letterheads_Plz_Click(object sender, RoutedEventArgs evt) { + await PrintLetterheads(2); } private void FocusSearchInput(object sender, RoutedEventArgs evt) {