From db4de5b5fe90a335a3198d9e39d8d5fb4e3962e7 Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner Date: Tue, 30 Jul 2024 14:24:53 +0200 Subject: [PATCH] [#3] Windows: Add option to export selected member or delivery only --- Elwig/Services/DeliveryService.cs | 46 ++++++++++------ Elwig/Services/MemberService.cs | 29 ++++++---- Elwig/Windows/DeliveryAdminWindow.xaml | 6 +++ Elwig/Windows/DeliveryAdminWindow.xaml.cs | 64 ++++++++++++++++------- Elwig/Windows/MemberAdminWindow.xaml | 5 ++ Elwig/Windows/MemberAdminWindow.xaml.cs | 59 +++++++++++++++------ 6 files changed, 149 insertions(+), 60 deletions(-) diff --git a/Elwig/Services/DeliveryService.cs b/Elwig/Services/DeliveryService.cs index 335b8ab..ec113eb 100644 --- a/Elwig/Services/DeliveryService.cs +++ b/Elwig/Services/DeliveryService.cs @@ -23,6 +23,10 @@ using System.Net.Http; namespace Elwig.Services { public static class DeliveryService { + public enum ExportSubject { + FromFilters, FromToday, FromSeasonAndBranch, Selected, + }; + public static async Task GetMemberAsync(int mgnr) { using var ctx = new AppDbContext(); return await ctx.Members @@ -522,23 +526,31 @@ namespace Elwig.Services { Mouse.OverrideCursor = null; } - public static async Task GenerateDeliveryJournal(this DeliveryAdminViewModel vm, int modeWho, ExportMode exportMode) { + public static async Task GenerateDeliveryJournal(this DeliveryAdminViewModel vm, ExportSubject subject, ExportMode mode) { using var ctx = new AppDbContext(); IQueryable query; List filterNames = []; - if (modeWho == 0) { + if (subject == ExportSubject.FromFilters) { var (f, _, q, _, _) = await vm.GetFilters(ctx); query = q; filterNames.AddRange(f); - } else if (modeWho == 2) { - query = ctx.DeliveryParts - .Where(p => p.Year == Utils.CurrentLastSeason && p.Delivery.ZwstId == App.ZwstId); - filterNames.AddRange([$"{Utils.CurrentLastSeason}", $"Zweigstelle {App.BranchName}"]); - } else { + } else if (subject == ExportSubject.FromToday) { var date = $"{Utils.Today:yyyy-MM-dd}"; query = ctx.DeliveryParts .Where(p => p.Delivery.DateString == date); filterNames.Add($"{Utils.Today:dd.MM.yyyy}"); + } else if (subject == ExportSubject.FromSeasonAndBranch) { + query = ctx.DeliveryParts + .Where(p => p.Year == Utils.CurrentLastSeason && p.Delivery.ZwstId == App.ZwstId); + filterNames.AddRange([$"{Utils.CurrentLastSeason}", $"Zweigstelle {App.BranchName}"]); + } else if (subject == ExportSubject.Selected) { + var lsnr = vm.SelectedDelivery?.LsNr; + if (lsnr == null) return; + query = ctx.DeliveryParts + .Where(p => p.Delivery.LsNr == lsnr); + filterNames.Add(lsnr); + } else { + throw new ArgumentException("Invalid value for ExportSubject"); } query = query @@ -547,7 +559,7 @@ namespace Elwig.Services { .ThenBy(p => p.Delivery.LsNr) .ThenBy(p => p.DPNr); - if (exportMode == ExportMode.SaveList) { + if (mode == ExportMode.SaveList) { var d = new SaveFileDialog() { FileName = $"{DeliveryJournal.Name}.ods", DefaultExt = "ods", @@ -565,9 +577,9 @@ namespace Elwig.Services { } Mouse.OverrideCursor = null; } - } else if (exportMode == ExportMode.Export) { + } else if (mode == ExportMode.Export) { var d = new SaveFileDialog() { - FileName = $"Lieferungen_{DateTime.Now:yyyy-MM-dd_HH-mm-ss}_{App.ZwstId}.elwig.zip", + FileName = subject == ExportSubject.Selected ? $"Lieferung_{vm.SelectedDelivery?.LsNr}.elwig.zip" : $"Lieferungen_{DateTime.Now:yyyy-MM-dd_HH-mm-ss}_{App.ZwstId}.elwig.zip", DefaultExt = "elwig.zip", Filter = "Elwig-Export-Datei (*.elwig.zip)|*.elwig.zip", Title = $"{DeliveryJournal.Name} speichern unter - Elwig" @@ -587,7 +599,7 @@ namespace Elwig.Services { } Mouse.OverrideCursor = null; } - } else if (exportMode == ExportMode.Upload && App.Config.SyncUrl != null) { + } else if (mode == ExportMode.Upload && App.Config.SyncUrl != null) { Mouse.OverrideCursor = Cursors.AppStarting; try { var filename = $"{DateTime.Now:yyyy-MM-dd_HH-mm-ss}_{App.ZwstId}.elwig.zip"; @@ -621,7 +633,7 @@ namespace Elwig.Services { try { var data = await DeliveryJournalData.FromQuery(query, filterNames); using var doc = new DeliveryJournal(string.Join(" / ", filterNames), data); - await Utils.ExportDocument(doc, exportMode); + await Utils.ExportDocument(doc, mode); } catch (Exception exc) { MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error); } @@ -629,26 +641,28 @@ namespace Elwig.Services { } } - public static async Task GenerateWineQualityStatistics(this DeliveryAdminViewModel vm, int modeWho, ExportMode exportMode) { + public static async Task GenerateWineQualityStatistics(this DeliveryAdminViewModel vm, ExportSubject subject, ExportMode mode) { using var ctx = new AppDbContext(); IQueryable query; List filterNames = []; - if (modeWho == 0) { + if (subject == ExportSubject.FromFilters) { var (f, _, q, _, _) = await vm.GetFilters(ctx); query = q; filterNames.AddRange(f); - } else { + } else if (subject == ExportSubject.FromToday) { var date = $"{Utils.Today:yyyy-MM-dd}"; query = ctx.DeliveryParts .Where(p => p.Delivery.DateString == date); filterNames.Add($"{Utils.Today:dd.MM.yyyy}"); + } else { + throw new ArgumentException("Invalid value for ExportSubject"); } Mouse.OverrideCursor = Cursors.AppStarting; try { var data = await WineQualityStatisticsData.FromQuery(query, App.Client.OrderingMemberList); using var doc = new WineQualityStatistics(string.Join(" / ", filterNames), data); - await Utils.ExportDocument(doc, exportMode); + await Utils.ExportDocument(doc, mode); } catch (Exception exc) { MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error); } diff --git a/Elwig/Services/MemberService.cs b/Elwig/Services/MemberService.cs index da45671..a2712de 100644 --- a/Elwig/Services/MemberService.cs +++ b/Elwig/Services/MemberService.cs @@ -19,6 +19,10 @@ using System.Net.Http; namespace Elwig.Services { public static class MemberService { + public enum ExportSubject { + All, AllActive, FromFilters, Selected, + }; + public static async Task InitInputs(this MemberAdminViewModel vm) { using var ctx = new AppDbContext(); vm.MgNrString = $"{await ctx.NextMgNr()}"; @@ -359,19 +363,26 @@ namespace Elwig.Services { Mouse.OverrideCursor = null; } - public static async Task GenerateMemberList(this MemberAdminViewModel vm, int modeWho, ExportMode exportMode) { + public static async Task GenerateMemberList(this MemberAdminViewModel vm, ExportSubject subject, ExportMode mode) { using var ctx = new AppDbContext(); IQueryable query; List filterNames = []; - if (modeWho == 0) { + if (subject == ExportSubject.All) { + query = ctx.Members; + } else if (subject == ExportSubject.AllActive) { query = ctx.Members.Where(m => m.IsActive); filterNames.Add("aktive Mitglieder"); - } else if (modeWho == 1) { + } else if (subject == ExportSubject.FromFilters) { var (f, q, _) = await vm.GetFilters(ctx); query = q; filterNames.AddRange(f); + } else if (subject == ExportSubject.Selected) { + var mgnr = vm.SelectedMember?.MgNr; + if (mgnr == null) return; + query = ctx.Members.Where(m => m.MgNr == mgnr); + filterNames.Add($"{mgnr}"); } else { - query = ctx.Members; + throw new ArgumentException("Invalid value for ExportSubject"); } if (vm.MemberListOrderByMgNr) { @@ -393,7 +404,7 @@ namespace Elwig.Services { .ThenBy(m => m.MgNr); } - if (exportMode == ExportMode.SaveList) { + if (mode == ExportMode.SaveList) { var d = new SaveFileDialog() { FileName = $"{MemberList.Name}.ods", DefaultExt = "ods", @@ -411,9 +422,9 @@ namespace Elwig.Services { } Mouse.OverrideCursor = null; } - } else if (exportMode == ExportMode.Export) { + } else if (mode == ExportMode.Export) { var d = new SaveFileDialog() { - FileName = $"Mitglieder_{DateTime.Now:yyyy-MM-dd_HH-mm-ss}_{App.ZwstId}.elwig.zip", + FileName = subject == ExportSubject.Selected ? $"Mitglied_{vm.SelectedMember?.MgNr}.elwig.zip" : $"Mitglieder_{DateTime.Now:yyyy-MM-dd_HH-mm-ss}_{App.ZwstId}.elwig.zip", DefaultExt = ".elwig.zip", Filter = "Elwig-Export-Datei (*.elwig.zip)|*.elwig.zip", Title = $"{MemberList.Name} speichern unter - Elwig" @@ -433,7 +444,7 @@ namespace Elwig.Services { } Mouse.OverrideCursor = null; } - } else if (exportMode == ExportMode.Upload && App.Config.SyncUrl != null) { + } else if (mode == ExportMode.Upload && App.Config.SyncUrl != null) { Mouse.OverrideCursor = Cursors.AppStarting; try { var filename = $"{DateTime.Now:yyyy-MM-dd_HH-mm-ss}_{App.ZwstId}.elwig.zip"; @@ -467,7 +478,7 @@ namespace Elwig.Services { try { var data = await MemberListData.FromQuery(query, filterNames); using var doc = new MemberList(string.Join(" / ", filterNames), data); - await Utils.ExportDocument(doc, exportMode); + await Utils.ExportDocument(doc, mode); } catch (Exception exc) { MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error); } diff --git a/Elwig/Windows/DeliveryAdminWindow.xaml b/Elwig/Windows/DeliveryAdminWindow.xaml index 6f7cf39..44f676e 100644 --- a/Elwig/Windows/DeliveryAdminWindow.xaml +++ b/Elwig/Windows/DeliveryAdminWindow.xaml @@ -124,6 +124,11 @@ + + + diff --git a/Elwig/Windows/DeliveryAdminWindow.xaml.cs b/Elwig/Windows/DeliveryAdminWindow.xaml.cs index 5fcb39d..1d4a212 100644 --- a/Elwig/Windows/DeliveryAdminWindow.xaml.cs +++ b/Elwig/Windows/DeliveryAdminWindow.xaml.cs @@ -175,33 +175,55 @@ namespace Elwig.Windows { } } - private async void Menu_DeliveryJournal_SaveToday_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateDeliveryJournal(1, ExportMode.SaveList); } - private async void Menu_DeliveryJournal_SavePdfToday_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateDeliveryJournal(1, ExportMode.SavePdf); } - private async void Menu_DeliveryJournal_ShowToday_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateDeliveryJournal(1, ExportMode.Show); } - private async void Menu_Export_ExportSeason_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateDeliveryJournal(2, ExportMode.Export); } - private async void Menu_DeliveryJournal_PrintToday_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateDeliveryJournal(1, ExportMode.Print); } - private async void Menu_DeliveryJournal_SaveFilters_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateDeliveryJournal(0, ExportMode.SaveList); } - private async void Menu_DeliveryJournal_SavePdfFilters_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateDeliveryJournal(0, ExportMode.SavePdf); } - private async void Menu_DeliveryJournal_ShowFilters_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateDeliveryJournal(0, ExportMode.Show); } - private async void Menu_DeliveryJournal_PrintFilters_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateDeliveryJournal(0, ExportMode.Print); } - private async void Menu_Export_ExportFilters_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateDeliveryJournal(0, ExportMode.Export); } + private async void Menu_DeliveryJournal_SaveToday_Click(object sender, RoutedEventArgs evt) => + await ViewModel.GenerateDeliveryJournal(DeliveryService.ExportSubject.FromToday, ExportMode.SaveList); + private async void Menu_DeliveryJournal_SavePdfToday_Click(object sender, RoutedEventArgs evt) => + await ViewModel.GenerateDeliveryJournal(DeliveryService.ExportSubject.FromToday, ExportMode.SavePdf); + private async void Menu_DeliveryJournal_ShowToday_Click(object sender, RoutedEventArgs evt) => + await ViewModel.GenerateDeliveryJournal(DeliveryService.ExportSubject.FromToday, ExportMode.Show); + private async void Menu_DeliveryJournal_PrintToday_Click(object sender, RoutedEventArgs evt) => + await ViewModel.GenerateDeliveryJournal(DeliveryService.ExportSubject.FromToday, ExportMode.Print); + private async void Menu_DeliveryJournal_SaveFilters_Click(object sender, RoutedEventArgs evt) => + await ViewModel.GenerateDeliveryJournal(DeliveryService.ExportSubject.FromFilters, ExportMode.SaveList); + private async void Menu_DeliveryJournal_SavePdfFilters_Click(object sender, RoutedEventArgs evt) => + await ViewModel.GenerateDeliveryJournal(DeliveryService.ExportSubject.FromFilters, ExportMode.SavePdf); + private async void Menu_DeliveryJournal_ShowFilters_Click(object sender, RoutedEventArgs evt) => + await ViewModel.GenerateDeliveryJournal(DeliveryService.ExportSubject.FromFilters, ExportMode.Show); + private async void Menu_DeliveryJournal_PrintFilters_Click(object sender, RoutedEventArgs evt) => + await ViewModel.GenerateDeliveryJournal(DeliveryService.ExportSubject.FromFilters, ExportMode.Print); + + private async void Menu_Export_ExportSeason_Click(object sender, RoutedEventArgs evt) => + await ViewModel.GenerateDeliveryJournal(DeliveryService.ExportSubject.FromSeasonAndBranch, ExportMode.Export); + private async void Menu_Export_ExportFilters_Click(object sender, RoutedEventArgs evt) => + await ViewModel.GenerateDeliveryJournal(DeliveryService.ExportSubject.FromFilters, ExportMode.Export); + private async void Menu_Export_ExportSelected_Click(object sender, RoutedEventArgs evt) => + await ViewModel.GenerateDeliveryJournal(DeliveryService.ExportSubject.Selected, ExportMode.Export); private async void Menu_Export_UploadSeason_Click(object sender, RoutedEventArgs evt) { if (App.Config.SyncUrl == null) return; - await ViewModel.GenerateDeliveryJournal(2, ExportMode.Upload); + await ViewModel.GenerateDeliveryJournal(DeliveryService.ExportSubject.FromSeasonAndBranch, ExportMode.Upload); } - private async void Menu_Export_UploadFilters_Click(object sender, RoutedEventArgs evt) { if (App.Config.SyncUrl == null) return; - await ViewModel.GenerateDeliveryJournal(0, ExportMode.Upload); + await ViewModel.GenerateDeliveryJournal(DeliveryService.ExportSubject.FromFilters, ExportMode.Upload); + } + private async void Menu_Export_UploadSelected_Click(object sender, RoutedEventArgs evt) { + if (App.Config.SyncUrl == null) return; + await ViewModel.GenerateDeliveryJournal(DeliveryService.ExportSubject.FromSeasonAndBranch, ExportMode.Upload); } - private async void Menu_WineQualityStatistics_ShowToday_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateWineQualityStatistics(1, ExportMode.Show); } - private async void Menu_WineQualityStatistics_SavePdfToday_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateWineQualityStatistics(1, ExportMode.SavePdf); } - private async void Menu_WineQualityStatistics_PrintToday_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateWineQualityStatistics(1, ExportMode.Print); } - private async void Menu_WineQualityStatistics_ShowFilters_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateWineQualityStatistics(0, ExportMode.Show); } - private async void Menu_WineQualityStatistics_SavePdfFilters_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateWineQualityStatistics(0, ExportMode.SavePdf); } - private async void Menu_WineQualityStatistics_PrintFilters_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateWineQualityStatistics(0, ExportMode.Print); } + private async void Menu_WineQualityStatistics_ShowToday_Click(object sender, RoutedEventArgs evt) => + await ViewModel.GenerateWineQualityStatistics(DeliveryService.ExportSubject.FromToday, ExportMode.Show); + private async void Menu_WineQualityStatistics_SavePdfToday_Click(object sender, RoutedEventArgs evt) => + await ViewModel.GenerateWineQualityStatistics(DeliveryService.ExportSubject.FromToday, ExportMode.SavePdf); + private async void Menu_WineQualityStatistics_PrintToday_Click(object sender, RoutedEventArgs evt) => + await ViewModel.GenerateWineQualityStatistics(DeliveryService.ExportSubject.FromToday, ExportMode.Print); + private async void Menu_WineQualityStatistics_ShowFilters_Click(object sender, RoutedEventArgs evt) => + await ViewModel.GenerateWineQualityStatistics(DeliveryService.ExportSubject.FromFilters, ExportMode.Show); + private async void Menu_WineQualityStatistics_SavePdfFilters_Click(object sender, RoutedEventArgs evt) => + await ViewModel.GenerateWineQualityStatistics(DeliveryService.ExportSubject.FromFilters, ExportMode.SavePdf); + private async void Menu_WineQualityStatistics_PrintFilters_Click(object sender, RoutedEventArgs evt) => + await ViewModel.GenerateWineQualityStatistics(DeliveryService.ExportSubject.FromFilters, ExportMode.Print); private async void Menu_WineQualityStatistics_Mode_Click(object sender, RoutedEventArgs evt) { Menu_WineQualityStatistics.IsSubmenuOpen = true; @@ -598,12 +620,16 @@ namespace Elwig.Windows { Menu_DeliveryNote_SavePdf.IsEnabled = !IsEditing && !IsCreating; Menu_DeliveryNote_Print.IsEnabled = !IsEditing && !IsCreating; Menu_DeliveryNote_Email.IsEnabled = !IsEditing && !IsCreating && App.Config.Smtp != null && d.Member.EmailAddresses.Count > 0; + Menu_Export_ExportSelected.IsEnabled = !IsEditing && !IsCreating; + Menu_Export_UploadSelected.IsEnabled = !IsEditing && !IsCreating && App.Config.SyncUrl != null; } else { DeleteDeliveryButton.IsEnabled = false; Menu_DeliveryNote_Show.IsEnabled = false; Menu_DeliveryNote_SavePdf.IsEnabled = false; Menu_DeliveryNote_Print.IsEnabled = false; Menu_DeliveryNote_Email.IsEnabled = false; + Menu_Export_ExportSelected.IsEnabled = false; + Menu_Export_UploadSelected.IsEnabled = false; } } diff --git a/Elwig/Windows/MemberAdminWindow.xaml b/Elwig/Windows/MemberAdminWindow.xaml index 26a041a..488635a 100644 --- a/Elwig/Windows/MemberAdminWindow.xaml +++ b/Elwig/Windows/MemberAdminWindow.xaml @@ -125,6 +125,11 @@ Click="Menu_List_Order_Click"/> + + + + await ViewModel.GenerateMemberList(MemberService.ExportSubject.AllActive, ExportMode.SaveList); + private async void Menu_List_ShowActive_Click(object sender, RoutedEventArgs evt) => + await ViewModel.GenerateMemberList(MemberService.ExportSubject.AllActive, ExportMode.Show); + private async void Menu_List_SavePdfActive_Click(object sender, RoutedEventArgs evt) => + await ViewModel.GenerateMemberList(MemberService.ExportSubject.AllActive, ExportMode.SavePdf); + private async void Menu_List_PrintActive_Click(object sender, RoutedEventArgs evt) => + await ViewModel.GenerateMemberList(MemberService.ExportSubject.AllActive, ExportMode.Print); + private async void Menu_List_SaveFilters_Click(object sender, RoutedEventArgs evt) => + await ViewModel.GenerateMemberList(MemberService.ExportSubject.FromFilters, ExportMode.SaveList); + private async void Menu_List_ShowFilters_Click(object sender, RoutedEventArgs evt) => + await ViewModel.GenerateMemberList(MemberService.ExportSubject.FromFilters, ExportMode.Show); + private async void Menu_List_SavePdfFilters_Click(object sender, RoutedEventArgs evt) => + await ViewModel.GenerateMemberList(MemberService.ExportSubject.FromFilters, ExportMode.SavePdf); + private async void Menu_List_PrintFilters_Click(object sender, RoutedEventArgs evt) => + await ViewModel.GenerateMemberList(MemberService.ExportSubject.FromFilters, ExportMode.Print); + private async void Menu_List_SaveAll_Click(object sender, RoutedEventArgs evt) => + await ViewModel.GenerateMemberList(MemberService.ExportSubject.All, ExportMode.SaveList); + private async void Menu_List_ShowAll_Click(object sender, RoutedEventArgs evt) => + await ViewModel.GenerateMemberList(MemberService.ExportSubject.All, ExportMode.Show); + private async void Menu_List_SavePdfAll_Click(object sender, RoutedEventArgs evt) => + await ViewModel.GenerateMemberList(MemberService.ExportSubject.All, ExportMode.SavePdf); + private async void Menu_List_PrintAll_Click(object sender, RoutedEventArgs evt) => + await ViewModel.GenerateMemberList(MemberService.ExportSubject.All, ExportMode.Print); - private async void Menu_Export_ExportAll_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateMemberList(2, ExportMode.Export); } - private async void Menu_Export_ExportFilters_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateMemberList(1, ExportMode.Export); } + private async void Menu_Export_ExportAll_Click(object sender, RoutedEventArgs evt) => + await ViewModel.GenerateMemberList(MemberService.ExportSubject.All, ExportMode.Export); + private async void Menu_Export_ExportFilters_Click(object sender, RoutedEventArgs evt) => + await ViewModel.GenerateMemberList(MemberService.ExportSubject.FromFilters, ExportMode.Export); + private async void Menu_Export_ExportSelected_Click(object sender, RoutedEventArgs evt) => + await ViewModel.GenerateMemberList(MemberService.ExportSubject.Selected, ExportMode.Export); private async void Menu_Export_UploadAll_Click(object sender, RoutedEventArgs evt) { if (App.Config.SyncUrl == null) return; - await ViewModel.GenerateMemberList(2, ExportMode.Upload); + await ViewModel.GenerateMemberList(MemberService.ExportSubject.All, ExportMode.Upload); } private async void Menu_Export_UploadFilters_Click(object sender, RoutedEventArgs evt) { if (App.Config.SyncUrl == null) return; - await ViewModel.GenerateMemberList(1, ExportMode.Upload); + await ViewModel.GenerateMemberList(MemberService.ExportSubject.FromFilters, ExportMode.Upload); } + private async void Menu_Export_UploadSelected_Click(object sender, RoutedEventArgs evt) { + if (App.Config.SyncUrl == null) return; + await ViewModel.GenerateMemberList(MemberService.ExportSubject.Selected, ExportMode.Upload); + } private async void Menu_List_Order_Click(object sender, RoutedEventArgs evt) { Menu_List.IsSubmenuOpen = true;