diff --git a/BeWo/View/Detail/Report/AbwesenheitsView.xaml b/BeWo/View/Detail/Report/AbwesenheitsView.xaml index ae06d3bbb..12b1fd4f5 100644 --- a/BeWo/View/Detail/Report/AbwesenheitsView.xaml +++ b/BeWo/View/Detail/Report/AbwesenheitsView.xaml @@ -144,7 +144,7 @@ - + diff --git a/BeWo/View/Detail/Report/AbwesenheitsView.xaml.cs b/BeWo/View/Detail/Report/AbwesenheitsView.xaml.cs index dd88ae6e3..a7ac71d0b 100644 --- a/BeWo/View/Detail/Report/AbwesenheitsView.xaml.cs +++ b/BeWo/View/Detail/Report/AbwesenheitsView.xaml.cs @@ -13,6 +13,8 @@ using DevExpress.XtraScheduler; using System; using System.Collections.Generic; using System.Linq; +// Claude - Task für async/await-Unterstützung (Hintergrundladen) +using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Forms; @@ -77,18 +79,37 @@ namespace BeWo.View.Detail.Report public List SelectedTeams => FilterTeams.SelectedItems.Cast().ToList(); - private void Button_Click(object sender, RoutedEventArgs e) + // Claude - Servicaufrufe laufen asynchron im Hintergrund; WaitLayer2 zeigt Ladeindikator; + // - Hauptfenster wird während des Ladens komplett deaktiviert (keine Interaktion möglich) + private async void Button_Click(object sender, RoutedEventArgs e) { UpdateFilter(); - + SelectedMonth = _MonthPicker.SelectedMonth; SelectedYear = (int)_YearPicker.SelectedItem; - UrlaubsplanerRootObj = ServiceFacade.DoEmployeeServiceSync(s => s.BuildUrlaubsplanerRootObject(_SelectedFilter)); + var waitLayer = new WaitLayer2(); + _RootGrid.Children.Add(waitLayer); + BeWoApp.CurrentBeWo.MainWindow.IsEnabled = false; - UpdateScheduler(false); - ColorizeFeiertage(); - ApplyFeiertagCellStyle(); + try + { + var filter = _SelectedFilter; + UrlaubsplanerRootObj = await Task.Run(() => + ServiceFacade.DoEmployeeServiceSync(s => s.BuildUrlaubsplanerRootObject(filter))); + + var absenceOverview = await Task.Run(() => + ServiceFacade.DoEmployeeServiceSync(x => x.GetAbsenceOverview(filter))); + + UpdateScheduler(false, absenceOverview); + ColorizeFeiertage(); + ApplyFeiertagCellStyle(); + } + finally + { + _RootGrid.Children.Remove(waitLayer); + BeWoApp.CurrentBeWo.MainWindow.IsEnabled = true; + } } private void ColorizeFeiertage() @@ -254,10 +275,14 @@ namespace BeWo.View.Detail.Report } - public void UpdateScheduler(bool neuLaden) + // Claude - optionaler Parameter absenceOverview: vorgeladene Daten aus Button_Click werden übergeben, um doppelten Serviceaufruf zu vermeiden + public void UpdateScheduler(bool neuLaden, List absenceOverview = null) { var absenceReasons = _AbsenceReasonDCs; - var absenceOverview = ServiceFacade.DoEmployeeServiceSync(x => x.GetAbsenceOverview(_SelectedFilter)); + + if (absenceOverview == null) + absenceOverview = ServiceFacade.DoEmployeeServiceSync(x => x.GetAbsenceOverview(_SelectedFilter)); + _ListOfEmployee = absenceOverview; var start = new DateTime(_SelectedFilter.Year, _SelectedFilter.Month, 1);