Windows: Add feature to save pdf in menu

This commit is contained in:
2024-03-28 16:54:51 +01:00
parent 9aa6cba1ff
commit b2f52072f8
6 changed files with 111 additions and 60 deletions

View File

@ -320,9 +320,12 @@ namespace Elwig.Windows {
Menu_DeliveryConfirmation.Items.Clear();
foreach (var s in await ctx.Seasons.OrderByDescending(s => s.Year).ToListAsync()) {
var i = new MenuItem { Header = $"Saison {s.Year}...", IsEnabled = MemberList.SelectedItem != null };
var show = new MenuItem { Header = "...anzeigen" };
var show = new MenuItem { Header = "...anzeigen (PDF)" };
show.Click += Menu_DeliveryConfirmation_Show_Click;
i.Items.Add(show);
var pdf = new MenuItem { Header = "...speichern... (PDF)" };
pdf.Click += Menu_DeliveryConfirmation_Email_Click;
i.Items.Add(pdf);
var print = new MenuItem { Header = "...drucken" };
print.Click += Menu_DeliveryConfirmation_Print_Click;
i.Items.Add(print);
@ -573,6 +576,12 @@ namespace Elwig.Windows {
await GenerateMemberDataSheet(m, ExportMode.Show);
}
private async void Menu_MemberDataSheet_SavePdf_Click(object sender, RoutedEventArgs evt) {
if (MemberList.SelectedItem is not Member m)
return;
await GenerateMemberDataSheet(m, ExportMode.SavePdf);
}
private async void Menu_MemberDataSheet_Print_Click(object sender, RoutedEventArgs evt) {
if (MemberList.SelectedItem is not Member m)
return;
@ -590,17 +599,7 @@ namespace Elwig.Windows {
try {
using var ctx = new AppDbContext();
using var doc = new MemberDataSheet(m, ctx);
await doc.Generate();
if (mode == ExportMode.Print && !App.Config.Debug) {
await doc.Print();
} else if (mode == ExportMode.Email) {
var success = await Utils.SendEmail(m, MemberDataSheet.Name, "Im Anhang finden Sie das aktuelle Stammdatenblatt", [doc]);
if (success)
MessageBox.Show("Die E-Mail wurde erfolgreich verschickt!", "E-Mail verschickt",
MessageBoxButton.OK, MessageBoxImage.Information);
} else {
doc.Show();
}
await Utils.ExportDocument(doc, mode, emailData: (m, MemberDataSheet.Name, "Im Anhang finden Sie das aktuelle Stammdatenblatt"));
} catch (Exception exc) {
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
}
@ -614,6 +613,13 @@ namespace Elwig.Windows {
await GenerateDeliveryConfirmation(m, s, ExportMode.Show);
}
private async void Menu_DeliveryConfirmation_SavePdf_Click(object sender, RoutedEventArgs evt) {
var season = ((sender as MenuItem)?.Parent as MenuItem)?.Header?.ToString()?.Split(' ')[^1].Split('.')[0];
if (MemberList.SelectedItem is not Member m || season == null || !int.TryParse(season, out var s))
return;
await GenerateDeliveryConfirmation(m, s, ExportMode.SavePdf);
}
private async void Menu_DeliveryConfirmation_Print_Click(object sender, RoutedEventArgs evt) {
var season = ((sender as MenuItem)?.Parent as MenuItem)?.Header?.ToString()?.Split(' ')[^1].Split('.')[0];
if (MemberList.SelectedItem is not Member m || season == null || !int.TryParse(season, out var s))
@ -634,17 +640,7 @@ namespace Elwig.Windows {
using var ctx = new AppDbContext();
var data = await DeliveryConfirmationDeliveryData.ForMember(ctx.DeliveryParts, year, m);
using var doc = new DeliveryConfirmation(ctx, year, m, data);
await doc.Generate();
if (mode == ExportMode.Print && !App.Config.Debug) {
await doc.Print();
} else if (mode == ExportMode.Email) {
var success = await Utils.SendEmail(m, $"{DeliveryConfirmation.Name} {year}", $"Im Anhang finden Sie die Anlieferungsbestätigung {year}", [doc]);
if (success)
MessageBox.Show("Die E-Mail wurde erfolgreich verschickt!", "E-Mail verschickt",
MessageBoxButton.OK, MessageBoxImage.Information);
} else {
doc.Show();
}
await Utils.ExportDocument(doc, mode, emailData: (m, $"{DeliveryConfirmation.Name} {year}", $"Im Anhang finden Sie die Anlieferungsbestätigung {year}"));
} catch (Exception exc) {
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
}
@ -653,12 +649,15 @@ namespace Elwig.Windows {
private async void Menu_List_SaveActive_Click(object sender, RoutedEventArgs evt) { await GenerateMemberList(0, ExportMode.SaveList); }
private async void Menu_List_ShowActive_Click(object sender, RoutedEventArgs evt) { await GenerateMemberList(0, ExportMode.Show); }
private async void Menu_List_SavePdfActive_Click(object sender, RoutedEventArgs evt) { await GenerateMemberList(0, ExportMode.SavePdf); }
private async void Menu_List_PrintActive_Click(object sender, RoutedEventArgs evt) { await GenerateMemberList(0, ExportMode.Print); }
private async void Menu_List_SaveFilters_Click(object sender, RoutedEventArgs evt) { await GenerateMemberList(1, ExportMode.SaveList); }
private async void Menu_List_ShowFilters_Click(object sender, RoutedEventArgs evt) { await GenerateMemberList(1, ExportMode.Show); }
private async void Menu_List_SavePdfFilters_Click(object sender, RoutedEventArgs evt) { await GenerateMemberList(1, ExportMode.SavePdf); }
private async void Menu_List_PrintFilters_Click(object sender, RoutedEventArgs evt) { await GenerateMemberList(1, ExportMode.Print); }
private async void Menu_List_SaveAll_Click(object sender, RoutedEventArgs evt) { await GenerateMemberList(2, ExportMode.SaveList); }
private async void Menu_List_ShowAll_Click(object sender, RoutedEventArgs evt) { await GenerateMemberList(2, ExportMode.Show); }
private async void Menu_List_SavePdfAll_Click(object sender, RoutedEventArgs evt) { await GenerateMemberList(2, ExportMode.SavePdf); }
private async void Menu_List_PrintAll_Click(object sender, RoutedEventArgs evt) { await GenerateMemberList(2, ExportMode.Print); }
private async void Menu_List_Order_Click(object sender, RoutedEventArgs evt) {
@ -739,12 +738,7 @@ namespace Elwig.Windows {
try {
var data = await MemberListData.FromQuery(query, filterNames);
using var doc = new MemberList(string.Join(" / ", filterNames), data);
await doc.Generate();
if (exportMode == ExportMode.Print && !App.Config.Debug) {
await doc.Print();
} else {
doc.Show();
}
await Utils.ExportDocument(doc, exportMode);
} catch (Exception exc) {
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
}
@ -1059,9 +1053,10 @@ namespace Elwig.Windows {
Menu_MemberDataSheet_Print.IsEnabled = true;
Menu_MemberDataSheet_Email.IsEnabled = App.Config.Smtp != null && m.EmailAddresses.Count > 0;
Menu_MemberDataSheet_Show.IsEnabled = true;
Menu_MemberDataSheet_SavePdf.IsEnabled = true;
foreach (var i in Menu_DeliveryConfirmation.Items.Cast<MenuItem>()) {
i.IsEnabled = true;
(i.Items[2] as MenuItem)!.IsEnabled = App.Config.Smtp != null && m.EmailAddresses.Count > 0;
(i.Items[^1] as MenuItem)!.IsEnabled = App.Config.Smtp != null && m.EmailAddresses.Count > 0;
}
FinishInputFilling();
@ -1073,6 +1068,7 @@ namespace Elwig.Windows {
Menu_MemberDataSheet_Print.IsEnabled = false;
Menu_MemberDataSheet_Email.IsEnabled = false;
Menu_MemberDataSheet_Show.IsEnabled = false;
Menu_MemberDataSheet_SavePdf.IsEnabled = false;
foreach (var i in Menu_DeliveryConfirmation.Items.Cast<MenuItem>()) {
i.IsEnabled = false;
}