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 @@