Helpers: Add enum ExportMode

This commit is contained in:
2024-03-28 13:41:05 +01:00
parent 82ea5920f2
commit c2b6486ede
3 changed files with 50 additions and 45 deletions

View File

@ -0,0 +1,5 @@
namespace Elwig.Helpers {
public enum ExportMode {
Show, SaveList, SavePdf, Print, Email
}
}

View File

@ -146,31 +146,31 @@ namespace Elwig.Windows {
private async void Menu_DeliveryNote_Show_Click(object sender, RoutedEventArgs evt) { private async void Menu_DeliveryNote_Show_Click(object sender, RoutedEventArgs evt) {
if (DeliveryList.SelectedItem is not Delivery d) if (DeliveryList.SelectedItem is not Delivery d)
return; return;
await GenerateDeliveryNote(d.Year, d.DId, 0); await GenerateDeliveryNote(d.Year, d.DId, ExportMode.Show);
} }
private async void Menu_DeliveryNote_Print_Click(object sender, RoutedEventArgs evt) { private async void Menu_DeliveryNote_Print_Click(object sender, RoutedEventArgs evt) {
if (DeliveryList.SelectedItem is not Delivery d) if (DeliveryList.SelectedItem is not Delivery d)
return; return;
await GenerateDeliveryNote(d.Year, d.DId, 1); await GenerateDeliveryNote(d.Year, d.DId, ExportMode.Print);
} }
private async void Menu_DeliveryNote_Email_Click(object sender, RoutedEventArgs evt) { private async void Menu_DeliveryNote_Email_Click(object sender, RoutedEventArgs evt) {
if (DeliveryList.SelectedItem is not Delivery d) if (DeliveryList.SelectedItem is not Delivery d)
return; return;
await GenerateDeliveryNote(d.Year, d.DId, 2); await GenerateDeliveryNote(d.Year, d.DId, ExportMode.Email);
} }
private static async Task GenerateDeliveryNote(int year, int did, int mode) { private static async Task GenerateDeliveryNote(int year, int did, ExportMode mode) {
Mouse.OverrideCursor = Cursors.AppStarting; Mouse.OverrideCursor = Cursors.AppStarting;
try { try {
using var ctx = new AppDbContext(); using var ctx = new AppDbContext();
var d = (await ctx.Deliveries.FindAsync(year, did))!; var d = (await ctx.Deliveries.FindAsync(year, did))!;
using var doc = new DeliveryNote(d, ctx); using var doc = new DeliveryNote(d, ctx);
await doc.Generate(); await doc.Generate();
if (mode == 1 && !App.Config.Debug) { if (mode == ExportMode.Print && !App.Config.Debug) {
await doc.Print(); await doc.Print();
} else if (mode == 2) { } else if (mode == ExportMode.Email) {
var success = await Utils.SendEmail(d.Member, $"{DeliveryNote.Name} Nr. {d.LsNr}", $"Im Anhang finden Sie den {DeliveryNote.Name} Nr. {d.LsNr}", [doc]); var success = await Utils.SendEmail(d.Member, $"{DeliveryNote.Name} Nr. {d.LsNr}", $"Im Anhang finden Sie den {DeliveryNote.Name} Nr. {d.LsNr}", [doc]);
if (success) if (success)
MessageBox.Show("Die E-Mail wurde erfolgreich verschickt!", "E-Mail verschickt", MessageBox.Show("Die E-Mail wurde erfolgreich verschickt!", "E-Mail verschickt",
@ -202,30 +202,30 @@ namespace Elwig.Windows {
} }
private async void Menu_DeliveryJournal_SaveToday_Click(object sender, RoutedEventArgs evt) { private async void Menu_DeliveryJournal_SaveToday_Click(object sender, RoutedEventArgs evt) {
await GenerateDeliveryJournal(1, 0); await GenerateDeliveryJournal(1, ExportMode.SaveList);
} }
private async void Menu_DeliveryJournal_ShowToday_Click(object sender, RoutedEventArgs evt) { private async void Menu_DeliveryJournal_ShowToday_Click(object sender, RoutedEventArgs evt) {
await GenerateDeliveryJournal(1, 1); await GenerateDeliveryJournal(1, ExportMode.Show);
} }
private async void Menu_DeliveryJournal_PrintToday_Click(object sender, RoutedEventArgs evt) { private async void Menu_DeliveryJournal_PrintToday_Click(object sender, RoutedEventArgs evt) {
await GenerateDeliveryJournal(1, 2); await GenerateDeliveryJournal(1, ExportMode.Print);
} }
private async void Menu_DeliveryJournal_SaveFilters_Click(object sender, RoutedEventArgs evt) { private async void Menu_DeliveryJournal_SaveFilters_Click(object sender, RoutedEventArgs evt) {
await GenerateDeliveryJournal(0, 0); await GenerateDeliveryJournal(0, ExportMode.SaveList);
} }
private async void Menu_DeliveryJournal_ShowFilters_Click(object sender, RoutedEventArgs evt) { private async void Menu_DeliveryJournal_ShowFilters_Click(object sender, RoutedEventArgs evt) {
await GenerateDeliveryJournal(0, 1); await GenerateDeliveryJournal(0, ExportMode.Show);
} }
private async void Menu_DeliveryJournal_PrintFilters_Click(object sender, RoutedEventArgs evt) { private async void Menu_DeliveryJournal_PrintFilters_Click(object sender, RoutedEventArgs evt) {
await GenerateDeliveryJournal(0, 2); await GenerateDeliveryJournal(0, ExportMode.Print);
} }
private async Task GenerateDeliveryJournal(int modeWho, int modeWhat) { private async Task GenerateDeliveryJournal(int modeWho, ExportMode exportMode) {
using var ctx = new AppDbContext(); using var ctx = new AppDbContext();
IQueryable<DeliveryPart> query; IQueryable<DeliveryPart> query;
List<string> filterNames = []; List<string> filterNames = [];
@ -246,7 +246,7 @@ namespace Elwig.Windows {
.ThenBy(p => p.Delivery.LsNr) .ThenBy(p => p.Delivery.LsNr)
.ThenBy(p => p.DPNr); .ThenBy(p => p.DPNr);
if (modeWhat == 0) { if (exportMode == ExportMode.SaveList) {
var d = new SaveFileDialog() { var d = new SaveFileDialog() {
FileName = $"{DeliveryJournal.Name}.ods", FileName = $"{DeliveryJournal.Name}.ods",
DefaultExt = "ods", DefaultExt = "ods",
@ -270,7 +270,7 @@ namespace Elwig.Windows {
var data = await DeliveryJournalData.FromQuery(query, filterNames); var data = await DeliveryJournalData.FromQuery(query, filterNames);
using var doc = new DeliveryJournal(string.Join(" / ", filterNames), data); using var doc = new DeliveryJournal(string.Join(" / ", filterNames), data);
await doc.Generate(); await doc.Generate();
if (modeWhat == 2 && !App.Config.Debug) { if (exportMode == ExportMode.Print && !App.Config.Debug) {
await doc.Print(); await doc.Print();
} else { } else {
doc.Show(); doc.Show();
@ -283,22 +283,22 @@ namespace Elwig.Windows {
} }
private async void Menu_WineQualityStatistics_ShowToday_Click(object sender, RoutedEventArgs evt) { private async void Menu_WineQualityStatistics_ShowToday_Click(object sender, RoutedEventArgs evt) {
await GenerateWineQualityStatistics(1, 1); await GenerateWineQualityStatistics(1, ExportMode.Show);
} }
private async void Menu_WineQualityStatistics_PrintToday_Click(object sender, RoutedEventArgs evt) { private async void Menu_WineQualityStatistics_PrintToday_Click(object sender, RoutedEventArgs evt) {
await GenerateWineQualityStatistics(1, 2); await GenerateWineQualityStatistics(1, ExportMode.Print);
} }
private async void Menu_WineQualityStatistics_ShowFilters_Click(object sender, RoutedEventArgs evt) { private async void Menu_WineQualityStatistics_ShowFilters_Click(object sender, RoutedEventArgs evt) {
await GenerateWineQualityStatistics(0, 1); await GenerateWineQualityStatistics(0, ExportMode.Show);
} }
private async void Menu_WineQualityStatistics_PrintFilters_Click(object sender, RoutedEventArgs evt) { private async void Menu_WineQualityStatistics_PrintFilters_Click(object sender, RoutedEventArgs evt) {
await GenerateWineQualityStatistics(0, 2); await GenerateWineQualityStatistics(0, ExportMode.Print);
} }
private async Task GenerateWineQualityStatistics(int modeWho, int modeWhat) { private async Task GenerateWineQualityStatistics(int modeWho, ExportMode exportMode) {
using var ctx = new AppDbContext(); using var ctx = new AppDbContext();
IQueryable<DeliveryPart> query; IQueryable<DeliveryPart> query;
List<string> filterNames = []; List<string> filterNames = [];
@ -318,7 +318,7 @@ namespace Elwig.Windows {
var data = await WineQualityStatisticsData.FromQuery(query); var data = await WineQualityStatisticsData.FromQuery(query);
using var doc = new WineQualityStatistics(string.Join(" / ", filterNames), data); using var doc = new WineQualityStatistics(string.Join(" / ", filterNames), data);
await doc.Generate(); await doc.Generate();
if (modeWhat == 2 && !App.Config.Debug) { if (exportMode == ExportMode.Print && !App.Config.Debug) {
await doc.Print(); await doc.Print();
} else { } else {
doc.Show(); doc.Show();

View File

@ -570,30 +570,30 @@ namespace Elwig.Windows {
private async void Menu_MemberDataSheet_Show_Click(object sender, RoutedEventArgs evt) { private async void Menu_MemberDataSheet_Show_Click(object sender, RoutedEventArgs evt) {
if (MemberList.SelectedItem is not Member m) if (MemberList.SelectedItem is not Member m)
return; return;
await GenerateMemberDataSheet(m, 0); await GenerateMemberDataSheet(m, ExportMode.Show);
} }
private async void Menu_MemberDataSheet_Print_Click(object sender, RoutedEventArgs evt) { private async void Menu_MemberDataSheet_Print_Click(object sender, RoutedEventArgs evt) {
if (MemberList.SelectedItem is not Member m) if (MemberList.SelectedItem is not Member m)
return; return;
await GenerateMemberDataSheet(m, 1); await GenerateMemberDataSheet(m, ExportMode.Print);
} }
private async void Menu_MemberDataSheet_Email_Click(object sender, RoutedEventArgs evt) { private async void Menu_MemberDataSheet_Email_Click(object sender, RoutedEventArgs evt) {
if (MemberList.SelectedItem is not Member m) if (MemberList.SelectedItem is not Member m)
return; return;
await GenerateMemberDataSheet(m, 2); await GenerateMemberDataSheet(m, ExportMode.Email);
} }
private static async Task GenerateMemberDataSheet(Member m, int mode) { private static async Task GenerateMemberDataSheet(Member m, ExportMode mode) {
Mouse.OverrideCursor = Cursors.AppStarting; Mouse.OverrideCursor = Cursors.AppStarting;
try { try {
using var ctx = new AppDbContext(); using var ctx = new AppDbContext();
using var doc = new MemberDataSheet(m, ctx); using var doc = new MemberDataSheet(m, ctx);
await doc.Generate(); await doc.Generate();
if (mode == 1 && !App.Config.Debug) { if (mode == ExportMode.Print && !App.Config.Debug) {
await doc.Print(); await doc.Print();
} else if (mode == 2) { } else if (mode == ExportMode.Email) {
var success = await Utils.SendEmail(m, MemberDataSheet.Name, "Im Anhang finden Sie das aktuelle Stammdatenblatt", [doc]); var success = await Utils.SendEmail(m, MemberDataSheet.Name, "Im Anhang finden Sie das aktuelle Stammdatenblatt", [doc]);
if (success) if (success)
MessageBox.Show("Die E-Mail wurde erfolgreich verschickt!", "E-Mail verschickt", MessageBox.Show("Die E-Mail wurde erfolgreich verschickt!", "E-Mail verschickt",
@ -611,33 +611,33 @@ namespace Elwig.Windows {
var season = ((sender as MenuItem)?.Parent as MenuItem)?.Header?.ToString()?.Split(' ')[^1].Split('.')[0]; 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)) if (MemberList.SelectedItem is not Member m || season == null || !int.TryParse(season, out var s))
return; return;
await GenerateDeliveryConfirmation(m, s, 0); await GenerateDeliveryConfirmation(m, s, ExportMode.Show);
} }
private async void Menu_DeliveryConfirmation_Print_Click(object sender, RoutedEventArgs evt) { 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]; 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)) if (MemberList.SelectedItem is not Member m || season == null || !int.TryParse(season, out var s))
return; return;
await GenerateDeliveryConfirmation(m, s, 1); await GenerateDeliveryConfirmation(m, s, ExportMode.Print);
} }
private async void Menu_DeliveryConfirmation_Email_Click(object sender, RoutedEventArgs evt) { private async void Menu_DeliveryConfirmation_Email_Click(object sender, RoutedEventArgs evt) {
var season = ((sender as MenuItem)?.Parent as MenuItem)?.Header?.ToString()?.Split(' ')[^1].Split('.')[0]; 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)) if (MemberList.SelectedItem is not Member m || season == null || !int.TryParse(season, out var s))
return; return;
await GenerateDeliveryConfirmation(m, s, 2); await GenerateDeliveryConfirmation(m, s, ExportMode.Email);
} }
private static async Task GenerateDeliveryConfirmation(Member m, int year, int mode) { private static async Task GenerateDeliveryConfirmation(Member m, int year, ExportMode mode) {
Mouse.OverrideCursor = Cursors.AppStarting; Mouse.OverrideCursor = Cursors.AppStarting;
try { try {
using var ctx = new AppDbContext(); using var ctx = new AppDbContext();
var data = await DeliveryConfirmationDeliveryData.ForMember(ctx.DeliveryParts, year, m); var data = await DeliveryConfirmationDeliveryData.ForMember(ctx.DeliveryParts, year, m);
using var doc = new DeliveryConfirmation(ctx, year, m, data); using var doc = new DeliveryConfirmation(ctx, year, m, data);
await doc.Generate(); await doc.Generate();
if (mode == 1 && !App.Config.Debug) { if (mode == ExportMode.Print && !App.Config.Debug) {
await doc.Print(); await doc.Print();
} else if (mode == 2) { } else if (mode == ExportMode.Email) {
var success = await Utils.SendEmail(m, $"{DeliveryConfirmation.Name} {year}", $"Im Anhang finden Sie die Anlieferungsbestätigung {year}", [doc]); var success = await Utils.SendEmail(m, $"{DeliveryConfirmation.Name} {year}", $"Im Anhang finden Sie die Anlieferungsbestätigung {year}", [doc]);
if (success) if (success)
MessageBox.Show("Die E-Mail wurde erfolgreich verschickt!", "E-Mail verschickt", MessageBox.Show("Die E-Mail wurde erfolgreich verschickt!", "E-Mail verschickt",
@ -651,15 +651,15 @@ namespace Elwig.Windows {
Mouse.OverrideCursor = null; Mouse.OverrideCursor = null;
} }
private async void Menu_List_SaveActive_Click(object sender, RoutedEventArgs evt) { await GenerateMemberList(0, 0); } 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, 1); } private async void Menu_List_ShowActive_Click(object sender, RoutedEventArgs evt) { await GenerateMemberList(0, ExportMode.Show); }
private async void Menu_List_PrintActive_Click(object sender, RoutedEventArgs evt) { await GenerateMemberList(0, 2); } 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, 0); } 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, 1); } private async void Menu_List_ShowFilters_Click(object sender, RoutedEventArgs evt) { await GenerateMemberList(1, ExportMode.Show); }
private async void Menu_List_PrintFilters_Click(object sender, RoutedEventArgs evt) { await GenerateMemberList(1, 2); } 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, 0); } 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, 1); } private async void Menu_List_ShowAll_Click(object sender, RoutedEventArgs evt) { await GenerateMemberList(2, ExportMode.Show); }
private async void Menu_List_PrintAll_Click(object sender, RoutedEventArgs evt) { await GenerateMemberList(2, 2); } 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) { private async void Menu_List_Order_Click(object sender, RoutedEventArgs evt) {
Menu_List.IsSubmenuOpen = true; Menu_List.IsSubmenuOpen = true;
@ -682,7 +682,7 @@ namespace Elwig.Windows {
await App.Client.UpdateValues(); await App.Client.UpdateValues();
} }
private async Task GenerateMemberList(int modeWho, int modeWhat) { private async Task GenerateMemberList(int modeWho, ExportMode exportMode) {
using var ctx = new AppDbContext(); using var ctx = new AppDbContext();
IQueryable<Member> query; IQueryable<Member> query;
List<string> filterNames = []; List<string> filterNames = [];
@ -716,7 +716,7 @@ namespace Elwig.Windows {
.ThenBy(m => m.MgNr); .ThenBy(m => m.MgNr);
} }
if (modeWhat == 0) { if (exportMode == ExportMode.SaveList) {
var d = new SaveFileDialog() { var d = new SaveFileDialog() {
FileName = $"{Documents.MemberList.Name}.ods", FileName = $"{Documents.MemberList.Name}.ods",
DefaultExt = "ods", DefaultExt = "ods",
@ -740,7 +740,7 @@ namespace Elwig.Windows {
var data = await MemberListData.FromQuery(query, filterNames); var data = await MemberListData.FromQuery(query, filterNames);
using var doc = new MemberList(string.Join(" / ", filterNames), data); using var doc = new MemberList(string.Join(" / ", filterNames), data);
await doc.Generate(); await doc.Generate();
if (modeWhat == 2 && !App.Config.Debug) { if (exportMode == ExportMode.Print && !App.Config.Debug) {
await doc.Print(); await doc.Print();
} else { } else {
doc.Show(); doc.Show();