From 29bb0a7d960e10806cb7f3768320785590d6453e Mon Sep 17 00:00:00 2001 From: Christian Date: Tue, 17 Sep 2024 21:10:47 +0200 Subject: [PATCH] =?UTF-8?q?Verbessertes=20Error=20Handling,=20Neuer=20Beri?= =?UTF-8?q?cht=20f=C3=BCr=20SHK=20Service,=20=C3=84nderungen=20an=20Vorlag?= =?UTF-8?q?en,=20Erweiterung=20Betreuungszeiten?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BeWo/BeWoApp.xaml.cs | 92 +++- BeWo/Core/BeWoUtils.cs | 2 +- BeWo/Core/Config/AppSettings.cs | 2 +- BeWo/ServiceProxy/ServiceFacade.cs | 64 +-- BeWo/View/Detail/SupportConceptView.xaml.cs | 15 +- BeWo/View/Detail/VorlageEditView.xaml | 2 +- BeWo/View/Detail/VorlageEditView.xaml.cs | 2 +- .../Zeiterfassung/ServiceRecordView2.xaml.cs | 4 +- BeWo/View/Master/DokumenteView.xaml | 95 ++-- BeWo/View/Master/DokumenteView.xaml.cs | 118 +++-- BeWo/View/StundenplanView.xaml | 4 +- BeWo/ViewModel/GkvAbrechnungVM.cs | 2 +- Data/Entities/Vorlagentabelle.cs | 4 + Data/Mappings/Vorlagentabelle.hbm.xml | 1 + Model/Changes_2024_09_16_Vorlagen.txt | 3 + Model/Changes_alle_fuer_neue_db.txt | 3 + Report/DefaultReports/Quittierungsbeleg.cs | 2 +- .../QuittierungsbelegMitDatum.cs | 2 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 9 +- .../Service/CustomOperationService.cs | 13 +- .../CustomReportCreator.cs | 16 +- ...CustomMitarbeiterstundenkontoBerechnung.cs | 2 +- .../Reports/AbweichungenArbeitszeitReport.cs | 2 +- .../Reports/AusgleichsberichtReport.cs | 62 +-- .../SHKServiceSBD/Reports/ReportHelper.cs | 21 +- .../VergleichArbeitszeitStundenplanReport.cs | 198 ++++++++ ...chArbeitszeitStundenplanReport.designer.cs | 435 ++++++++++++++++++ ...VergleichArbeitszeitStundenplanReport.resx | 120 +++++ ReportImp/SHKServiceSBD/SHKServiceSBD.csproj | 9 + .../Service/CustomOperationService.cs | 13 +- .../VorlagentabelleDC_Vorlagentabelle.cs | 2 + Service/Plugins/OperationService.cs | 38 +- Service/Plugins/PluginLoader.cs | 7 +- Shared/DataContracts/VorlagentabelleDC.cs | 2 + 34 files changed, 1126 insertions(+), 240 deletions(-) create mode 100644 Model/Changes_2024_09_16_Vorlagen.txt create mode 100644 ReportImp/SHKServiceSBD/Reports/VergleichArbeitszeitStundenplanReport.cs create mode 100644 ReportImp/SHKServiceSBD/Reports/VergleichArbeitszeitStundenplanReport.designer.cs create mode 100644 ReportImp/SHKServiceSBD/Reports/VergleichArbeitszeitStundenplanReport.resx diff --git a/BeWo/BeWoApp.xaml.cs b/BeWo/BeWoApp.xaml.cs index 8b06c5bf3..ce59751c0 100644 --- a/BeWo/BeWoApp.xaml.cs +++ b/BeWo/BeWoApp.xaml.cs @@ -33,6 +33,7 @@ using ChatController.HauptKlassen; using DevExpress.Xpf.Core; using DevExpress.Xpf.Grid; using DevExpress.XtraScheduler; +using System.ServiceModel; namespace BeWo { @@ -852,20 +853,21 @@ namespace BeWo } } - internal static void ShowError(string message, Exception ex, bool showDetails) + internal static void ShowError(string message, Exception ex, bool showSupportForm, bool showStacktrace) { if (MainControl != null) { MainControl.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (Action) (() => { + MainControl.EndWaiting(); UserControl exControl = null; - if (showDetails && BeWoApp.LoggedOnUser != null && BeWoApp.LoggedOnUser.HasRight(BS.Shared.UserRightType.Support_View)) + if (showSupportForm && BeWoApp.LoggedOnUser != null && BeWoApp.LoggedOnUser.HasRight(BS.Shared.UserRightType.Support_View)) { exControl = new ExceptionMessageBoxWithSupportMail(ex); } else { - exControl = new ExceptionMessageBox(message, ex, showDetails); + exControl = new ExceptionMessageBox(message, ex, showStacktrace); } MainControl.ShowControlAsModalPopup(exControl); @@ -873,7 +875,7 @@ namespace BeWo } else if (LoginControl != null) { - LoginControl.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (Action) (() => LoginControl.ShowControlAsModalPopUp(new ExceptionMessageBox(message, ex, showDetails)))); + LoginControl.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (Action) (() => LoginControl.ShowControlAsModalPopUp(new ExceptionMessageBox(message, ex, showStacktrace)))); } else { @@ -931,7 +933,7 @@ namespace BeWo && !ex.Exception.ToString().Contains("DevExpress.Xpf.Grid.Native.SelectionStrategyCellBase.IsCellSelected"))) { - ShowError(null, ex.Exception, true); + ShowErrorMessage(ex.Exception); } ex.Handled = true; }; @@ -939,6 +941,86 @@ namespace BeWo FrameworkElement.LanguageProperty.OverrideMetadata(typeof (FrameworkElement), new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag))); } + public static void ShowErrorMessage(Exception e) + { + if (e is FaultException) + { + var lBeWoFault = (e as FaultException).Detail; + + String rowUpdated = "Der Datensatz wurde in der Zwischenzeit von " + BS.Shared.Translation.Translator.Translate("einem anderen Benutzer") + " geändert. Ihre Änderungen konnten leider NICHT gespeichert werden. Das Problem tritt auf, wenn mehrere " + BS.Shared.Translation.Translator.Translate("BenutzerPlural") + " gleichzeitig den gleichen Datensatz bearbeiten.\n\nSie müssen den Datensatz schließen und erneut öffnen, um die Änderungen vornehmen zu können."; + switch (lBeWoFault.FaultType) + { + case BeWoFaultType.Concurrency: + BeWoApp.ShowError(rowUpdated, e, false, false); + break; + case BeWoFaultType.DeleteNotPossible: + MessageBox.Show(lBeWoFault.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Asterisk); + break; + case BeWoFaultType.LoginNameTaken: + MessageBox.Show(lBeWoFault.Message, "Warnung", MessageBoxButton.OK, MessageBoxImage.Asterisk); + return; + case BeWoFaultType.CustomWithoutDetails: + BeWoApp.ShowError(lBeWoFault.Message, e, false, false); + break; + default: + if (!String.IsNullOrEmpty(e.Message) && e.Message.IndexOf("Row was updated or deleted by another transaction") >= 0) + { + BeWoApp.ShowError(rowUpdated, e, false, false); + } + else if (!String.IsNullOrEmpty(lBeWoFault.Message) && lBeWoFault.Message.IndexOf("überschreitet") >= 0 && lBeWoFault.Message.IndexOf("erlaubte Größe") >= 0) + { + BeWoApp.ShowError(lBeWoFault.Message, e, false, false); + } + else + { + ShowDefaultErrorMessage(e, lBeWoFault.Message); + } + break; + } + } + else + { + ShowDefaultErrorMessage(e, String.Format("{0}", e)); + + } + } + + private static void ShowDefaultErrorMessage(Exception e, string errormessage) + { + var displayMessage = errormessage; + var stacktrace = String.Format("{0}", e); + + if (!String.IsNullOrEmpty(stacktrace)) + { + bool showStackTrace = true; + bool showSupportForm = true; + + if (stacktrace.IndexOf("Es war kein an https:") >= 0 && stacktrace.IndexOf("lauschender Endpunkt") >= 0) + { + displayMessage = "Es konnte leider keine Verbindung zum Server hergestellt werden. Bitte prüfen Sie Ihre Internetverbindung oder versuchen Sie es später erneut. Bei wiederholter Fehlermeldung schicken Sie bitte folgende Fehlermeldung an support@bewoplaner.de"; + showSupportForm = false; + } + else if (stacktrace.IndexOf("Der Prozess kann nicht auf die Datei") >= 0 && stacktrace.IndexOf("von einem anderen Prozess verwendet") >= 0) + { + showStackTrace = false; + showSupportForm = false; + } + else if (stacktrace.IndexOf("GenericADOException") >= 0 && stacktrace.IndexOf("could not insert") >= 0 && stacktrace.IndexOf("Incorrect string value") >= 0) + { + displayMessage = "Ihre Eingabe enthält ungültige Zeichen. Wenn Sie einen Text aus einem anderen Programm kopiert haben, entfernen Sie bitte vor dem Speichern die ungültigen Zeichen oder geben Sie den Text manuell ein."; + showStackTrace = true; + showSupportForm = false; + } + + + BeWoApp.ShowError(displayMessage, e, showSupportForm, showStackTrace); + } + else + { + BeWoApp.ShowError(null, e, true, true); + } + } + private static void ReloadSettings(List settings) { if (_LoggedOnUser != null) diff --git a/BeWo/Core/BeWoUtils.cs b/BeWo/Core/BeWoUtils.cs index aebbe9a58..d7f7a87e7 100644 --- a/BeWo/Core/BeWoUtils.cs +++ b/BeWo/Core/BeWoUtils.cs @@ -252,7 +252,7 @@ namespace BeWo.Core } catch (Exception e) { - BeWoApp.ShowError(null, e, true); + BeWoApp.ShowErrorMessage(e); BeWoApp.MainControl.EndWaiting(); } }, diff --git a/BeWo/Core/Config/AppSettings.cs b/BeWo/Core/Config/AppSettings.cs index 3126d116d..41b5cf144 100644 --- a/BeWo/Core/Config/AppSettings.cs +++ b/BeWo/Core/Config/AppSettings.cs @@ -26,7 +26,7 @@ namespace BeWo.Core.Config private CustomerFilterEnum _CustomerFilterCustomers = CustomerFilterEnum.All; private bool _showExpiredSupportConcepts = true; - private bool _showServiceRecordGridControl; + private bool _showServiceRecordGridControl = true; private bool _filterGroupServiceCategories = true; private WindowStateType mWindowStateType = WindowStateType.Default; diff --git a/BeWo/ServiceProxy/ServiceFacade.cs b/BeWo/ServiceProxy/ServiceFacade.cs index 5177f5751..688e95432 100644 --- a/BeWo/ServiceProxy/ServiceFacade.cs +++ b/BeWo/ServiceProxy/ServiceFacade.cs @@ -875,70 +875,10 @@ namespace BeWo.ServiceProxy private static void ShowErrorMessage(Exception e) { - if (e is FaultException) - { - var lBeWoFault = (e as FaultException).Detail; - - String rowUpdated = "Der Datensatz wurde in der Zwischenzeit von " + BS.Shared.Translation.Translator.Translate("einem anderen Benutzer") + " geändert. Ihre Änderungen konnten leider NICHT gespeichert werden. Das Problem tritt auf, wenn mehrere " + BS.Shared.Translation.Translator.Translate("BenutzerPlural") + " gleichzeitig den gleichen Datensatz bearbeiten.\n\nSie müssen den Datensatz schließen und erneut öffnen, um die Änderungen vornehmen zu können."; - switch (lBeWoFault.FaultType) - { - case BeWoFaultType.Concurrency: - BeWoApp.ShowError(rowUpdated, e, false); - break; - case BeWoFaultType.DeleteNotPossible: - MessageBox.Show(lBeWoFault.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Asterisk); - break; - case BeWoFaultType.LoginNameTaken: - MessageBox.Show(lBeWoFault.Message, "Warnung", MessageBoxButton.OK, MessageBoxImage.Asterisk); - return; - case BeWoFaultType.CustomWithoutDetails: - BeWoApp.ShowError(lBeWoFault.Message, e, false); - break; - default: - if (!String.IsNullOrEmpty(e.Message) && e.Message.IndexOf("Row was updated or deleted by another transaction") >= 0) - { - BeWoApp.ShowError(rowUpdated, e, false); - } - else if (!String.IsNullOrEmpty(lBeWoFault.Message) && lBeWoFault.Message.IndexOf("überschreitet") >= 0 && lBeWoFault.Message.IndexOf("erlaubte Größe") >= 0) - { - BeWoApp.ShowError(lBeWoFault.Message, e, false); - } - else - { - if (!String.IsNullOrEmpty(lBeWoFault.Message)) - { - BeWoApp.ShowError(lBeWoFault.Message, e, true); - } - else - { - BeWoApp.ShowError(null, e, true); - } - } - break; - } - } - else - { - String allMessage = String.Format("{0}", e); - - if (!String.IsNullOrEmpty(allMessage) && allMessage.IndexOf("Es war kein an https://") >= 0 && allMessage.IndexOf("lauschender Endpunkt") >= 0) - { - String msg = "Es konnte leider keine Verbindung zum Server hergestellt werden. Bitte prüfen Sie Ihre Internetverbindung oder versuchen Sie es später erneut. Bei wiederholter Fehlermeldung schicken Sie bitte folgende Fehlermeldung an support@bewoplaner.de"; - - BeWoApp.ShowError(msg, e, true); - } - else if (!String.IsNullOrEmpty(e.Message) && e.Message.IndexOf("Der Prozess kann nicht auf die Datei") >= 0 && e.Message.IndexOf("von einem anderen Prozess verwendet") >= 0) - { - BeWoApp.ShowError(e.Message, e, false); - } - else - { - BeWoApp.ShowError(null, e, true); - } - } + BeWoApp.ShowErrorMessage(e); } - private static void StartWaiting() + private static void StartWaiting() { Monitor.Enter(_Lock); if ((++_RunningAsyncs) == 1 && BeWoApp.MainControl != null) diff --git a/BeWo/View/Detail/SupportConceptView.xaml.cs b/BeWo/View/Detail/SupportConceptView.xaml.cs index 283fd03b3..eeae0282b 100644 --- a/BeWo/View/Detail/SupportConceptView.xaml.cs +++ b/BeWo/View/Detail/SupportConceptView.xaml.cs @@ -100,6 +100,14 @@ namespace BeWo.View.Detail { tabitem_documents.Visibility = Visibility.Collapsed; } + + tabitem_grid_tasks.IsEnabled = false; + + if (BeWoApp.LoggedOnUser.HasRight(UserRightType.SupportConcept_AllowEditTasks)) + { + tabitem_grid_tasks.IsEnabled = true; + } + if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.SupportConceptView_Edit)) { grid_details.IsEnabled = false; @@ -110,18 +118,19 @@ namespace BeWo.View.Detail grid_serviceaccountings.IsEnabled = false; - tabitem_grid_tasks.IsEnabled = false; - if (BeWoApp.LoggedOnUser.HasRight(UserRightType.SupportConcept_AllowEditTasks)) { - tabitem_grid_tasks.IsEnabled = true; tabitem_tasks.IsSelected = true; } + if (BeWoApp.LoggedOnUser.HasRight(UserRightType.SupportConcept_AllowEditGoals)) { tabitem_goals.IsSelected = true; } } + + + if (pViewModel.VarFields == null || pViewModel.VarFields.VMList.Count == 0) { tabitem_varFields.Visibility = Visibility.Collapsed; diff --git a/BeWo/View/Detail/VorlageEditView.xaml b/BeWo/View/Detail/VorlageEditView.xaml index bedccb8c2..be091d741 100644 --- a/BeWo/View/Detail/VorlageEditView.xaml +++ b/BeWo/View/Detail/VorlageEditView.xaml @@ -34,7 +34,7 @@ -