From 2379ba2bd6e964ff182f797bc22cd9a9e4ea63bc Mon Sep 17 00:00:00 2001 From: Kojo Date: Mon, 3 Aug 2026 10:41:29 +0200 Subject: [PATCH] =?UTF-8?q?Neues=20Benutzerrecht=20"Mitarbeiter=20Abwesenh?= =?UTF-8?q?eiten=20l=C3=B6schen=20nach=20Ablauf"=20-=20MoK-Anteil,=20to=20?= =?UTF-8?q?be=20tested=20ToDoOID=3D1328370181?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/EmployeeController.cs | 6 ++++++ BeWoPlanerMobil/Models/CustomerModel.cs | 2 ++ BeWoPlanerMobil/Models/EmployeeModel.cs | 19 ++++++++++++++++++- BeWoPlanerMobil/Models/IAbsenceTimeModel.cs | 1 + .../Views/Shared/AbsenceTimePartial.cshtml | 6 +++--- 5 files changed, 30 insertions(+), 4 deletions(-) diff --git a/BeWoPlanerMobil/Controllers/EmployeeController.cs b/BeWoPlanerMobil/Controllers/EmployeeController.cs index 6313b2734..5be5c3840 100644 --- a/BeWoPlanerMobil/Controllers/EmployeeController.cs +++ b/BeWoPlanerMobil/Controllers/EmployeeController.cs @@ -268,6 +268,12 @@ namespace BeWoPlanerMobil.Controllers ViewData["AbsenceTimeError"] = "Beim Löschen der Abwesenheit ist ein Fehler aufgetreten!

Bitte wenden Sie sich an Ihren Administrator."; } + if(absenceTime2Delete != null && !Model.CanDeleteAbsenceTime(absenceTime2Delete)) + { + ViewData["AbsenceTimeError"] = "Sie haben nicht das Benutzerrecht, bereits vergangene Mitarbeiter-Abwesenheiten zu löschen."; + return PartialView("AbsenceTimePartial", Model); + } + var employee = Model.SelectedEmployee; employee.AbsenceTimes.Remove(absenceTime2Delete); diff --git a/BeWoPlanerMobil/Models/CustomerModel.cs b/BeWoPlanerMobil/Models/CustomerModel.cs index 4a8f3ce42..0e03a6343 100644 --- a/BeWoPlanerMobil/Models/CustomerModel.cs +++ b/BeWoPlanerMobil/Models/CustomerModel.cs @@ -16,6 +16,8 @@ namespace BeWoPlanerMobil.Models { public bool HasRightToEdit => HasRightToEditCustomers; public bool HasRightToDelete => HasRightToEditCustomers; + + public bool CanDeleteAbsenceTime(AbsenceTimeDC absenceTime) => HasRightToDelete; public long? ObjectOid => SelectedCustomerOid; public TableID ObjectTid => TableID.Customer; public string HtmlPrefix => "customer"; diff --git a/BeWoPlanerMobil/Models/EmployeeModel.cs b/BeWoPlanerMobil/Models/EmployeeModel.cs index c33cb4a4d..1a2e67f50 100644 --- a/BeWoPlanerMobil/Models/EmployeeModel.cs +++ b/BeWoPlanerMobil/Models/EmployeeModel.cs @@ -1,4 +1,5 @@ -using BS.Shared.DataContracts; +using BS.Shared; +using BS.Shared.DataContracts; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Web.Mvc; @@ -9,6 +10,22 @@ namespace BeWoPlanerMobil.Models { public bool HasRightToEdit => HasRightToEditEmployeeAbsenceTimes; public bool HasRightToDelete => HasRightToEditEmployeeAbsenceTimes; + + public bool CanDeleteAbsenceTime(AbsenceTimeDC absenceTime) + { + if (!HasRightToDelete) + { + return false; + } + + if (absenceTime.IsInThePast) + { + return CheckRight(UserRightType.Employee_AllowDeleteAbsenceTimesAfterExpiry); + } + + return true; + } + public string HtmlPrefix => "employee"; public EmployeeSessionModel EmployeeSessionModel => SessionModel as EmployeeSessionModel; diff --git a/BeWoPlanerMobil/Models/IAbsenceTimeModel.cs b/BeWoPlanerMobil/Models/IAbsenceTimeModel.cs index 9471cd7fa..41bdc7ad1 100644 --- a/BeWoPlanerMobil/Models/IAbsenceTimeModel.cs +++ b/BeWoPlanerMobil/Models/IAbsenceTimeModel.cs @@ -16,5 +16,6 @@ namespace BeWoPlanerMobil.Models long? AbsenteeOid { get; } bool HasRightToEdit { get; } bool HasRightToDelete { get; } + bool CanDeleteAbsenceTime(AbsenceTimeDC absenceTime); } } diff --git a/BeWoPlanerMobil/Views/Shared/AbsenceTimePartial.cshtml b/BeWoPlanerMobil/Views/Shared/AbsenceTimePartial.cshtml index 4893fd78c..ee2901150 100644 --- a/BeWoPlanerMobil/Views/Shared/AbsenceTimePartial.cshtml +++ b/BeWoPlanerMobil/Views/Shared/AbsenceTimePartial.cshtml @@ -85,7 +85,7 @@

- @if(Model.HasRightToEdit || Model.HasRightToDelete) + @if(Model.HasRightToEdit || Model.CanDeleteAbsenceTime(absenceTime)) {
@@ -97,8 +97,8 @@
} - - @if(Model.HasRightToDelete) + + @if(Model.CanDeleteAbsenceTime(absenceTime)) {