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; + } + } }