From 913b51b58b32404323dc11c21d4c7403540f968f Mon Sep 17 00:00:00 2001 From: Kojo Date: Mon, 3 Aug 2026 10:40:39 +0200 Subject: [PATCH] =?UTF-8?q?Neues=20Benutzerrecht=20"Mitarbeiter=20Abwesenh?= =?UTF-8?q?eiten=20l=C3=B6schen=20nach=20Ablauf"=20-=20FaC-Anteil=20ToDoOI?= =?UTF-8?q?D=3D1328370181?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ViewModel/EmployeeAbsenceTimeListVM.cs | 23 ++++++++++++++++++- BeWo/View/Detail/AbsenceTimesView.xaml.cs | 21 ++++++++++++++++- 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/BeWo/Scheduler/ViewModel/EmployeeAbsenceTimeListVM.cs b/BeWo/Scheduler/ViewModel/EmployeeAbsenceTimeListVM.cs index 693571af9..d8c34cab6 100644 --- a/BeWo/Scheduler/ViewModel/EmployeeAbsenceTimeListVM.cs +++ b/BeWo/Scheduler/ViewModel/EmployeeAbsenceTimeListVM.cs @@ -1,11 +1,14 @@ using System.Collections.Generic; using System.Linq; +using System.Windows; using System.Windows.Media; using BS.Shared; using BS.Shared.DataContracts; using BS.Shared.DataContracts.Compact; +using BS.Shared.Translation; +using BeWo.Core; using BeWo.ServiceProxy; using BeWo.Scheduler.Resources; using BeWo.Scheduler.View; @@ -151,7 +154,25 @@ namespace BeWo.Scheduler.ViewModel protected override void DeleteAppointments(IEnumerable dcList) { - ServiceFacade.DoCustomerServiceAsync(s => s.DeactivateAbsenceTimes(dcList.ToDictionary(dc => dc.AbsenceTimeOid != null ? dc.AbsenceTimeOid.Value : 0, + var lDcList = dcList.ToList(); + + if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.Employee_AllowDeleteAbsenceTimesAfterExpiry)) + { + var pastAbsenceTimes = lDcList.Where(dc => dc.IsInThePast).ToList(); + if (pastAbsenceTimes.Count > 0) + { + lDcList = lDcList.Except(pastAbsenceTimes).ToList(); + MessageBox.Show(Translator.Translate("Sie besitzen nicht das Benutzerrecht, bereits vergangene Mitarbeiter-Abwesenheiten zu löschen."), + "BeWo Planer", MessageBoxButton.OK, MessageBoxImage.Warning); + } + } + + if (lDcList.Count == 0) + { + return; + } + + ServiceFacade.DoCustomerServiceAsync(s => s.DeactivateAbsenceTimes(lDcList.ToDictionary(dc => dc.AbsenceTimeOid != null ? dc.AbsenceTimeOid.Value : 0, dc => dc.AbsenceTimeVersion != null ? dc.AbsenceTimeVersion.Value : 0))); } diff --git a/BeWo/View/Detail/AbsenceTimesView.xaml.cs b/BeWo/View/Detail/AbsenceTimesView.xaml.cs index d0d3d276c..807036e79 100644 --- a/BeWo/View/Detail/AbsenceTimesView.xaml.cs +++ b/BeWo/View/Detail/AbsenceTimesView.xaml.cs @@ -7,6 +7,7 @@ using BeWo.Core.Commands; using BeWo.ServiceProxy; using BeWo.ViewModel; using BeWo.ViewModel.ListViewModel; +using BS.Shared; using BS.Shared.Extensions; using BS.Shared.Translation; using DependencyObject = System.Windows.DependencyObject; @@ -139,9 +140,27 @@ namespace BeWo.View.Detail private void RemoveAbsenceTime() { - AbsenceTimes?.VMList.Remove(DataGridAbsenceTimes.GetCurrentValue()); + var absenceTime = DataGridAbsenceTimes.GetCurrentValue(); + if (absenceTime == null) + { + return; + } + + if (IsAbsenceTimeInThePast(absenceTime) && !BeWoApp.LoggedOnUser.HasRight(UserRightType.Employee_AllowDeleteAbsenceTimesAfterExpiry)) + { + MessageBox.Show(Translator.Translate("Sie haben nicht das Benutzerrecht, bereits vergangene Mitarbeiter-Abwesenheiten zu löschen."), + "BeWo Planer", MessageBoxButton.OK, MessageBoxImage.Warning); + return; + } + + AbsenceTimes?.VMList.Remove(absenceTime); BeWoWpfUtils.RefreshDXGrid(DataGridAbsenceTimes); } + private static bool IsAbsenceTimeInThePast(AbsenceTimeVM absenceTime) + { + return absenceTime.End.HasValue && absenceTime.End.Value.Date < DateTime.Today; + } + } }