From 7e9a27c75d66f05539fb8abb66fde7dcd2e17cfd Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner Date: Wed, 9 Jul 2025 16:07:47 +0200 Subject: [PATCH] Services: Move App.HintContextChange() to Windows --- Elwig/Services/AreaComService.cs | 10 +++------ Elwig/Services/DeliveryAncmtService.cs | 8 +++---- Elwig/Services/DeliveryScheduleService.cs | 2 -- Elwig/Services/DeliveryService.cs | 22 +++---------------- Elwig/Services/MemberService.cs | 10 +++------ Elwig/Services/PaymentVariantService.cs | 15 ++----------- Elwig/Windows/AreaComAdminWindow.xaml.cs | 2 ++ Elwig/Windows/DeliveryAdminWindow.xaml.cs | 5 +++++ .../Windows/DeliveryAncmtAdminWindow.xaml.cs | 19 ++++++++-------- .../DeliveryScheduleAdminWindow.xaml.cs | 19 ++++++++-------- Elwig/Windows/MemberAdminWindow.xaml.cs | 2 ++ Elwig/Windows/PaymentAdjustmentWindow.xaml.cs | 2 +- Elwig/Windows/PaymentVariantsWindow.xaml.cs | 9 ++++++++ 13 files changed, 53 insertions(+), 72 deletions(-) diff --git a/Elwig/Services/AreaComService.cs b/Elwig/Services/AreaComService.cs index c0d3853..403c2d6 100644 --- a/Elwig/Services/AreaComService.cs +++ b/Elwig/Services/AreaComService.cs @@ -108,7 +108,7 @@ namespace Elwig.Services { public static async Task UpdateAreaCommitment(this AreaComAdminViewModel vm, int? oldFbNr) { int newFbNr = (int)vm.FbNr!; - await Task.Run(async () => { + return await Task.Run(async () => { using var ctx = new AppDbContext(); var a = new AreaCom { FbNr = oldFbNr ?? newFbNr, @@ -141,11 +141,9 @@ namespace Elwig.Services { if (newFbNr != a.FbNr) { await ctx.Database.ExecuteSqlAsync($"UPDATE area_commitment SET fbnr = {newFbNr} WHERE fbnr = {oldFbNr}"); } + + return newFbNr; }); - - App.HintContextChange(); - - return newFbNr; } private static void AddToolTipCell(Grid grid, string text, int row, int col, int colSpan = 1, bool bold = false, bool alignRight = false, bool alignCenter = false) { @@ -262,8 +260,6 @@ namespace Elwig.Services { ctx.Remove(l); await ctx.SaveChangesAsync(); }); - - App.HintContextChange(); } } } diff --git a/Elwig/Services/DeliveryAncmtService.cs b/Elwig/Services/DeliveryAncmtService.cs index 241aab1..ab010e8 100644 --- a/Elwig/Services/DeliveryAncmtService.cs +++ b/Elwig/Services/DeliveryAncmtService.cs @@ -211,7 +211,7 @@ namespace Elwig.Services { int newMgNr = vm.MgNr!.Value; string newSortId = vm.SortId!; - await Task.Run(async () => { + return await Task.Run(async () => { using var ctx = new AppDbContext(); var a = new DeliveryAncmt { Year = oldYear ?? year, @@ -233,11 +233,9 @@ namespace Elwig.Services { if (oldDsNr != null && (oldYear != year || oldDsNr != dsnr || oldMgNr != newMgNr || oldSortId != newSortId)) { await ctx.Database.ExecuteSqlAsync($"UPDATE delivery_announcement SET year = {year}, dsnr = {dsnr}, mgnr = {newMgNr}, sortid = {newSortId} WHERE (year, dsnr, mgnr, sortid) = ({a.Year}, {a.DsNr}, {a.MgNr}, {a.SortId})"); } + + return (year, dsnr, newMgNr, newSortId); }); - - App.HintContextChange(); - - return (year, dsnr, newMgNr, newSortId); } public static async Task GenerateDeliveryAncmtList(this DeliveryAncmtAdminViewModel vm, ExportSubject subject, ExportMode mode) { diff --git a/Elwig/Services/DeliveryScheduleService.cs b/Elwig/Services/DeliveryScheduleService.cs index 345cb43..969208b 100644 --- a/Elwig/Services/DeliveryScheduleService.cs +++ b/Elwig/Services/DeliveryScheduleService.cs @@ -183,8 +183,6 @@ namespace Elwig.Services { await ctx.SaveChangesAsync(); }); - - App.HintContextChange(); } } } diff --git a/Elwig/Services/DeliveryService.cs b/Elwig/Services/DeliveryService.cs index d7f86ee..5e397aa 100644 --- a/Elwig/Services/DeliveryService.cs +++ b/Elwig/Services/DeliveryService.cs @@ -430,7 +430,7 @@ namespace Elwig.Services { } public static async Task UpdateDeliveryPart(this DeliveryAdminViewModel vm, int? oldYear, int? oldDid, int? oldDpnr, bool dateHasChanged, bool timeHasChanged, bool timeIsDefault) { - var p = await Task.Run(async () => { + return await Task.Run(async () => { DeliveryPart p; using var ctx = new AppDbContext(); @@ -528,14 +528,10 @@ namespace Elwig.Services { return p; }); - - App.HintContextChange(); - - return p; } public static async Task SplitDeliveryToMember(int year, int did, int[] weights, int mgnr) { - var n = await Task.Run(async () => { + return await Task.Run(async () => { Delivery n; using var ctx = new AppDbContext(); @@ -584,14 +580,10 @@ namespace Elwig.Services { return n; }); - - App.HintContextChange(); - - return n; } public static async Task SplitDeliveryToLsNr(int year, int did, int[] weights, string lsnr) { - var n = await Task.Run(async () => { + return await Task.Run(async () => { Delivery n; using var ctx = new AppDbContext(); var anyLeft = false; @@ -625,10 +617,6 @@ namespace Elwig.Services { return n; }); - - App.HintContextChange(); - - return n; } public static async Task DepreciateDelivery(int year, int did, int[] weights) { @@ -658,8 +646,6 @@ namespace Elwig.Services { } await ctx.SaveChangesAsync(); }); - - App.HintContextChange(); } public static async Task GenerateDeliveryNote(int year, int did, ExportMode mode) { @@ -1102,8 +1088,6 @@ namespace Elwig.Services { await ctx.Deliveries.Where(d => d.LsNr == lsnr).ExecuteDeleteAsync(); await ctx.SaveChangesAsync(); }); - - App.HintContextChange(); } } } diff --git a/Elwig/Services/MemberService.cs b/Elwig/Services/MemberService.cs index 43b45ab..557385f 100644 --- a/Elwig/Services/MemberService.cs +++ b/Elwig/Services/MemberService.cs @@ -611,7 +611,7 @@ namespace Elwig.Services { ContactViaEmail = vm.ContactViaEmail, }; - await Task.Run(async () => { + return await Task.Run(async () => { using var ctx = new AppDbContext(); if (oldMgNr != null) { ctx.Update(m); @@ -695,11 +695,9 @@ namespace Elwig.Services { if (newMgNr != m.MgNr) { await ctx.Database.ExecuteSqlAsync($"UPDATE member SET mgnr = {newMgNr} WHERE mgnr = {oldMgNr}"); } + + return newMgNr; }); - - App.HintContextChange(); - - return newMgNr; } public static async Task DeleteMember(int mgnr, bool deletePaymentData, bool deleteDeliveries, bool deleteAreaComs) { @@ -718,8 +716,6 @@ namespace Elwig.Services { ctx.Remove(l); await ctx.SaveChangesAsync(); }); - - App.HintContextChange(); } } } diff --git a/Elwig/Services/PaymentVariantService.cs b/Elwig/Services/PaymentVariantService.cs index 64fbcc0..c6cd7b6 100644 --- a/Elwig/Services/PaymentVariantService.cs +++ b/Elwig/Services/PaymentVariantService.cs @@ -287,8 +287,7 @@ namespace Elwig.Services { } public static async Task CreatePaymentVariant(int year) { - Mouse.OverrideCursor = Cursors.Wait; - var v = await Task.Run(async () => { + return await Task.Run(async () => { using var ctx = new AppDbContext(); var v = new PaymentVar { Year = year, @@ -302,13 +301,10 @@ namespace Elwig.Services { await ctx.SaveChangesAsync(); return v; }); - App.HintContextChange(); - Mouse.OverrideCursor = null; - return v; } public static async Task Duplicate(this PaymentVar orig) { - var n = await Task.Run(async () => { + return await Task.Run(async () => { using var ctx = new AppDbContext(); var n = new PaymentVar { Year = orig.Year, @@ -322,8 +318,6 @@ namespace Elwig.Services { await ctx.SaveChangesAsync(); return n; }); - App.HintContextChange(); - return n; } public static async Task<(int, int)> UpdatePaymentVariant(this PaymentVariantsViewModel vm, int? oldYear, int? oldAvNr) { @@ -357,7 +351,6 @@ namespace Elwig.Services { await ctx.SaveChangesAsync(); }); vm.WeightModifierChanged = false; - App.HintContextChange(); return (year, avnr); } @@ -368,7 +361,6 @@ namespace Elwig.Services { ctx.Remove(v); await ctx.SaveChangesAsync(); }); - App.HintContextChange(); } public static async Task Calculate(int year, int avnr) { @@ -376,7 +368,6 @@ namespace Elwig.Services { var b = new BillingVariant(year, avnr); await b.Calculate(); }); - App.HintContextChange(); } public static async Task Commit(int year, int avnr) { @@ -384,7 +375,6 @@ namespace Elwig.Services { var b = new BillingVariant(year, avnr); await b.Commit(); }); - App.HintContextChange(); } public static async Task Revert(int year, int avnr) { @@ -392,7 +382,6 @@ namespace Elwig.Services { var b = new BillingVariant(year, avnr); await b.Revert(); }); - App.HintContextChange(); } } } diff --git a/Elwig/Windows/AreaComAdminWindow.xaml.cs b/Elwig/Windows/AreaComAdminWindow.xaml.cs index f8b94b6..77b0f6b 100644 --- a/Elwig/Windows/AreaComAdminWindow.xaml.cs +++ b/Elwig/Windows/AreaComAdminWindow.xaml.cs @@ -206,6 +206,7 @@ namespace Elwig.Windows { Mouse.OverrideCursor = Cursors.Wait; try { await AreaComService.DeleteAreaCom(a.FbNr); + App.HintContextChange(); } catch (Exception exc) { var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message; if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message; @@ -228,6 +229,7 @@ namespace Elwig.Windows { int fbnr; try { fbnr = await ViewModel.UpdateAreaCommitment((AreaCommitmentList.SelectedItem as AreaCom)?.FbNr); + App.HintContextChange(); } catch (Exception exc) { var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message; if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message; diff --git a/Elwig/Windows/DeliveryAdminWindow.xaml.cs b/Elwig/Windows/DeliveryAdminWindow.xaml.cs index c7340d1..ca3450d 100644 --- a/Elwig/Windows/DeliveryAdminWindow.xaml.cs +++ b/Elwig/Windows/DeliveryAdminWindow.xaml.cs @@ -732,6 +732,7 @@ namespace Elwig.Windows { InputHasChanged(TimeInput), !InputIsNotDefault(TimeInput) ); + App.HintContextChange(); } catch (Exception exc) { var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message; if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message; @@ -770,6 +771,7 @@ namespace Elwig.Windows { InputHasChanged(TimeInput), !InputIsNotDefault(TimeInput) ); + App.HintContextChange(); } catch (Exception exc) { var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message; if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message; @@ -905,6 +907,7 @@ namespace Elwig.Windows { var n = await DeliveryService.SplitDeliveryToLsNr(d.Year, d.DId, weights, id); ControlUtils.SelectItemWithPk(DeliveryList, n.Year, n.DId); } + App.HintContextChange(); } catch (Exception exc) { var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message; if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message; @@ -962,6 +965,7 @@ namespace Elwig.Windows { Mouse.OverrideCursor = Cursors.Wait; try { await DeliveryService.DeleteDelivery(d.LsNr); + App.HintContextChange(); } catch (Exception exc) { var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message; if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message; @@ -991,6 +995,7 @@ namespace Elwig.Windows { InputHasChanged(TimeInput), !InputIsNotDefault(TimeInput) ); + App.HintContextChange(); } catch (Exception exc) { var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message; if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message; diff --git a/Elwig/Windows/DeliveryAncmtAdminWindow.xaml.cs b/Elwig/Windows/DeliveryAncmtAdminWindow.xaml.cs index d7cceab..1d2fd34 100644 --- a/Elwig/Windows/DeliveryAncmtAdminWindow.xaml.cs +++ b/Elwig/Windows/DeliveryAncmtAdminWindow.xaml.cs @@ -319,18 +319,18 @@ namespace Elwig.Windows { "Anmeldung löschen", MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel); if (r == MessageBoxResult.OK) { Mouse.OverrideCursor = Cursors.Wait; - await Task.Run(async () => { - try { + try { + await Task.Run(async () => { using var ctx = new AppDbContext(); ctx.Remove(a); await ctx.SaveChangesAsync(); - } catch (Exception exc) { - var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message; - if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message; - MessageBox.Show(str, "Anmeldung löschen", MessageBoxButton.OK, MessageBoxImage.Error); - } - }); - App.HintContextChange(); + }); + App.HintContextChange(); + } catch (Exception exc) { + var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message; + if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message; + MessageBox.Show(str, "Anmeldung löschen", MessageBoxButton.OK, MessageBoxImage.Error); + } Mouse.OverrideCursor = null; } } @@ -350,6 +350,7 @@ namespace Elwig.Windows { try { var s = ViewModel.SelectedDeliveryAncmt; (year, dsnr, mgnr, sortid) = await ViewModel.UpdateDeliveryAncmt(s?.Year, s?.DsNr, s?.MgNr, s?.SortId, s?.Type); + App.HintContextChange(); } catch (Exception exc) { var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message; if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message; diff --git a/Elwig/Windows/DeliveryScheduleAdminWindow.xaml.cs b/Elwig/Windows/DeliveryScheduleAdminWindow.xaml.cs index 11781cb..96e688c 100644 --- a/Elwig/Windows/DeliveryScheduleAdminWindow.xaml.cs +++ b/Elwig/Windows/DeliveryScheduleAdminWindow.xaml.cs @@ -178,18 +178,18 @@ namespace Elwig.Windows { "Leseplan löschen", MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel); if (r == MessageBoxResult.OK) { Mouse.OverrideCursor = Cursors.Wait; - await Task.Run(async () => { - try { + try { + await Task.Run(async () => { using var ctx = new AppDbContext(); ctx.Remove(s); await ctx.SaveChangesAsync(); - } catch (Exception exc) { - var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message; - if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message; - MessageBox.Show(str, "Leseplan löschen", MessageBoxButton.OK, MessageBoxImage.Error); - } - }); - App.HintContextChange(); + }); + App.HintContextChange(); + } catch (Exception exc) { + var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message; + if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message; + MessageBox.Show(str, "Leseplan löschen", MessageBoxButton.OK, MessageBoxImage.Error); + } Mouse.OverrideCursor = null; } } @@ -206,6 +206,7 @@ namespace Elwig.Windows { try { await ViewModel.UpdateDeliverySchedule(ViewModel.SelectedDeliverySchedule?.Year, ViewModel.SelectedDeliverySchedule?.DsNr); + App.HintContextChange(); } catch (Exception exc) { var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message; if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message; diff --git a/Elwig/Windows/MemberAdminWindow.xaml.cs b/Elwig/Windows/MemberAdminWindow.xaml.cs index 9b7e13e..9bf83eb 100644 --- a/Elwig/Windows/MemberAdminWindow.xaml.cs +++ b/Elwig/Windows/MemberAdminWindow.xaml.cs @@ -392,6 +392,7 @@ namespace Elwig.Windows { Mouse.OverrideCursor = Cursors.Wait; try { await MemberService.DeleteMember(m.MgNr, d.DeletePaymentData, d.DeleteDeliveries, d.DeleteAreaComs); + App.HintContextChange(); } catch (Exception exc) { var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message; if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message; @@ -414,6 +415,7 @@ namespace Elwig.Windows { int mgnr; try { mgnr = await ViewModel.UpdateMember(ViewModel.SelectedMember?.MgNr); + App.HintContextChange(); } catch (Exception exc) { var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message; if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message; diff --git a/Elwig/Windows/PaymentAdjustmentWindow.xaml.cs b/Elwig/Windows/PaymentAdjustmentWindow.xaml.cs index f97ffcf..da41326 100644 --- a/Elwig/Windows/PaymentAdjustmentWindow.xaml.cs +++ b/Elwig/Windows/PaymentAdjustmentWindow.xaml.cs @@ -310,12 +310,12 @@ namespace Elwig.Windows { } await ctx.SaveChangesAsync(); }); + App.HintContextChange(); } catch (Exception exc) { var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message; if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message; MessageBox.Show(str, "Benutzerdefinierten Zu-/Abschlag speichern", MessageBoxButton.OK, MessageBoxImage.Error); } - App.HintContextChange(); Mouse.OverrideCursor = null; } } diff --git a/Elwig/Windows/PaymentVariantsWindow.xaml.cs b/Elwig/Windows/PaymentVariantsWindow.xaml.cs index fad63bd..fc12b35 100644 --- a/Elwig/Windows/PaymentVariantsWindow.xaml.cs +++ b/Elwig/Windows/PaymentVariantsWindow.xaml.cs @@ -87,14 +87,17 @@ namespace Elwig.Windows { } private async void AddButton_Click(object sender, RoutedEventArgs evt) { + Mouse.OverrideCursor = Cursors.Wait; try { var v = await PaymentVariantService.CreatePaymentVariant(Year); + App.HintContextChange(); ControlUtils.SelectItem(PaymentVariantList, v); } catch (Exception exc) { var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message; if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message; MessageBox.Show(str, "Auszahlungsvariante erstellen", MessageBoxButton.OK, MessageBoxImage.Error); } + Mouse.OverrideCursor = null; } private async void CopyButton_Click(object sender, RoutedEventArgs evt) { @@ -103,6 +106,7 @@ namespace Elwig.Windows { Mouse.OverrideCursor = Cursors.Wait; try { PaymentVar n = await orig.Duplicate(); + App.HintContextChange(); ControlUtils.SelectItem(PaymentVariantList, n); } catch (Exception exc) { var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message; @@ -118,6 +122,7 @@ namespace Elwig.Windows { Mouse.OverrideCursor = Cursors.Wait; try { await PaymentVariantService.DeletePaymentVariant(v.Year, v.AvNr); + App.HintContextChange(); } catch (Exception exc) { var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message; if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message; @@ -133,6 +138,7 @@ namespace Elwig.Windows { Mouse.OverrideCursor = Cursors.Wait; try { await PaymentVariantService.Calculate(v.Year, v.AvNr); + App.HintContextChange(); } catch (Exception exc) { MessageBox.Show(exc.Message, "Berechnungsfehler", MessageBoxButton.OK, MessageBoxImage.Error); } @@ -194,6 +200,7 @@ namespace Elwig.Windows { Mouse.OverrideCursor = Cursors.Wait; try { await PaymentVariantService.Commit(v.Year, v.AvNr); + App.HintContextChange(); } catch (Exception exc) { MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error); } @@ -214,6 +221,7 @@ namespace Elwig.Windows { Mouse.OverrideCursor = Cursors.Wait; try { await PaymentVariantService.Revert(v.Year, v.AvNr); + App.HintContextChange(); } catch (Exception exc) { MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error); } @@ -243,6 +251,7 @@ namespace Elwig.Windows { Mouse.OverrideCursor = Cursors.Wait; try { await ViewModel.UpdatePaymentVariant(v.Year, v.AvNr); + App.HintContextChange(); } catch (Exception exc) { await HintContextChange(); var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;