MemberAdminWindow: Add more letterhead sorting options

This commit is contained in:
2023-10-16 23:25:22 +02:00
parent 3b3489b492
commit daddd069a3
2 changed files with 31 additions and 24 deletions

View File

@ -59,6 +59,8 @@
Click="Menu_Print_Letterheads_MgNr_Click"/> Click="Menu_Print_Letterheads_MgNr_Click"/>
<MenuItem x:Name="Menu_Print_Letterheads_Name" Header="nach Name sortiert" IsEnabled="False" Tag="Print" <MenuItem x:Name="Menu_Print_Letterheads_Name" Header="nach Name sortiert" IsEnabled="False" Tag="Print"
Click="Menu_Print_Letterheads_Name_Click"/> Click="Menu_Print_Letterheads_Name_Click"/>
<MenuItem x:Name="Menu_Print_Letterheads_Plz" Header="nach PLZ, Ort, Name sortiert" IsEnabled="False" Tag="Print"
Click="Menu_Print_Letterheads_Plz_Click"/>
</MenuItem> </MenuItem>
</MenuItem> </MenuItem>
<MenuItem Header="Rundschreiben"> <MenuItem Header="Rundschreiben">

View File

@ -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 n = await Context.Members.CountAsync(m => m.IsActive);
var res = MessageBox.Show( var res = MessageBox.Show(
$"Sollen wirklich {n} Seiten gedruckt werden?", "Ausdruck Bestätigen", $"Sollen wirklich {n} Seiten gedruckt werden?", "Ausdruck Bestätigen",
@ -299,10 +299,25 @@ namespace Elwig.Windows {
if (res != MessageBoxResult.Yes) if (res != MessageBoxResult.Yes)
return; return;
Mouse.OverrideCursor = Cursors.AppStarting; Mouse.OverrideCursor = Cursors.AppStarting;
using var doc = await Document.Merge(Context.Members var members = Context.Members.Where(m => m.IsActive && m.ContactViaPost);
.Where(m => m.IsActive && m.ContactViaPost) switch (ordering) {
.OrderBy(m => m.MgNr) case 0: members = members
.Select(m => new Letterhead(m))); .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(); await doc.Generate();
Mouse.OverrideCursor = null; Mouse.OverrideCursor = null;
if (App.Config.Debug) { if (App.Config.Debug) {
@ -312,26 +327,16 @@ namespace Elwig.Windows {
} }
} }
private async void Menu_Print_Letterheads_Name_Click(object sender, RoutedEventArgs evt) { private async void Menu_Print_Letterheads_MgNr_Click(object sender, RoutedEventArgs evt) {
var n = await Context.Members.CountAsync(m => m.IsActive); await PrintLetterheads(0);
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();
} }
private async void Menu_Print_Letterheads_Name_Click(object sender, RoutedEventArgs evt) {
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) { private void FocusSearchInput(object sender, RoutedEventArgs evt) {