@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()) {
Betreff
Ort
Start
Ende
@Html.DevExpress().CheckBox( settings => { settings.Name = nameof(SchedulerAppointmentDC.IsPrivate); settings.Width = Unit.Percentage(100); settings.Properties.RootStyle.CssClass = ""; settings.ReadOnly = disabled.Length > 0; }).Bind(Model.IsPrivate).GetHtml()
Privat
@Html.DevExpress().CheckBox( settings => { settings.Name = nameof(SchedulerAppointmentDC.AllDay); settings.Width = Unit.Percentage(100); settings.ReadOnly = disabled.Length > 0; }).Bind(Model.AllDay).GetHtml()
Ganztägig
@if(Model.HasRightKalenderMitarbeitertermineAnsehen || Model.HasRightKalenderKliententermineAnsehen || Model.HasRightKalenderRessourcentermineAnsehen) {
@if(showEmployeeButton) { @Html.Partial("CustomEmployeeSelectPartial", Model) } @if(showCustomerButton) { @Html.Partial("CustomCustomerSelectPartial", Model) } @if(showResourceButton) { @Html.Partial("CustomResourceSelectPartial", Model) }
}
@*@{ var recurrenceSettings = (AppointmentRecurrenceFormSettings) ViewBag.AppointmentRecurrenceFormSettings; recurrenceSettings.Enabled = areButtonsVisible; } @Html.DevExpress().AppointmentRecurrenceForm(recurrenceSettings).GetHtml()*@
Serienmuster
Jeden
Tag
Jeden Wochentag
Jede
Woche am:
Tag
jeden Monats
Am
jeden Monats
Am
Am
im
Seriendauer
Ohne Ende
Endet nach:
Wiederholungen
Endet am:
@if(areButtonsVisible) { } @if(isDeleteButtonVisible) { }
@Html.DevExpress().SchedulerStatusInfo( settings => { settings.Name = "schedulerStatusInfo"; settings.Priority = 1; settings.SchedulerName = "scheduler"; }).GetHtml()
}