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"/>
<MenuItem x:Name="Menu_Print_Letterheads_Name" Header="nach Name sortiert" IsEnabled="False" Tag="Print"
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 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 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) {