@model BeWoPlanerMobil.Models.AppointmentModel @using BS.Shared.DataContracts @using DevExpress.Web.Mvc.UI @{ Html.EnableClientValidation(); Html.EnableUnobtrusiveJavaScript(); // Ist bei Serientermininstanzen ebenfalls null! var isNew = Model.Oid is null && Model.RecurrenceIndex == 0 && Model.RecurrenceInfo is null; var cancelButtonText = "Abbrechen"; var isOriginator = Model.OriginatorOid?.Equals(Model.LoggedInCompactEmployee.EmployeeOid) ?? false; var isInEmployeeList = Model.SelectedEmployee2SchedulerAppointments.Any(employee2Appointment => employee2Appointment.Employee.Equals(Model.LoggedInCompactEmployee)); var hasCustomers = Model.SelectedCustomers.Any(); var hasEmployees = Model.SelectedEmployee2SchedulerAppointments.Any(); var hasResources = Model.SelectedResources.Any(); var canEditCustomerApt = Model.HasRightKalenderKlientenTermineAendern; var canEditEmployeeApt = Model.HasRightKalenderMitarbeiterTermineAendern; var canEditResourceApt = Model.HasRightKalenderRessourcenTermineAendern; var canEditOthersResourceApt = Model.HasRightKalenderRessourcenTermineAndererAendern; var areButtonsVisible = true; if(isOriginator is false || isNew is false) { if(canEditCustomerApt is false && hasCustomers) { areButtonsVisible = false; } if(canEditEmployeeApt is false && hasEmployees && isInEmployeeList is false) { areButtonsVisible = false; } } // Es ist eigentlich unmöglich als jemand anderes einen Termin anzulegen, denn der angemeldete Mitarbeiter ist ja immer der InsUser. if(isOriginator is false && isNew is false) { if(canEditOthersResourceApt is false && hasResources) { areButtonsVisible = false; } } else if(isNew is false) { // Falls man beim Anlegen mehr Rechte hatte als beim Bearbeiten: if(canEditResourceApt is false && hasResources) { areButtonsVisible = false; } } var disabled = string.Empty; if(areButtonsVisible is false) { cancelButtonText = "Schließen"; disabled = "disabled"; } var isDeleteButtonVisible = areButtonsVisible && isNew is false; var dateInputType = isNew is false && Model.AllDay ? "date" : "datetime-local"; var start = Model.StartTime.HasValue ? Model.AllDay ? $"{Model.StartTime:yyyy-MM-dd}" : $"{Model.StartTime:yyyy-MM-ddTHH:mm}" : string.Empty; var end = Model.EndTime.HasValue ? Model.AllDay ? $"{Model.EndTime:yyyy-MM-dd}" : $"{Model.EndTime:yyyy-MM-ddTHH:mm}" : string.Empty; var showEmployeeButton = (Model.HasRightKalenderMitarbeitertermineAnsehen && Model.Oid.HasValue) || (Model.Oid.HasValue && Model.HasRightKalenderMitarbeiterTermineAendern) || (Model.Oid is null && Model.HasRightKalenderMitarbeiterTermineAnlegen); var showCustomerButton = (Model.HasRightKalenderKliententermineAnsehen && Model.Oid.HasValue) || (Model.Oid.HasValue && Model.HasRightKalenderKlientenTermineAendern) || (Model.Oid is null && Model.HasRightKalenderKlientenTermineAnlegen); var showResourceButton = (Model.HasRightKalenderRessourcentermineAnsehen && Model.Oid.HasValue) || (Model.Oid.HasValue && (Model.HasRightKalenderRessourcenTermineAendern && isOriginator || isOriginator is false && Model.HasRightKalenderRessourcenTermineAndererAendern)) || (Model.Oid is null && Model.HasRightKalenderRessourcenTermineAnlegen); if(areButtonsVisible != Model.CanBeEdited) { } } @using(Html.BeginForm()) {