254 lines
9.6 KiB
Plaintext
254 lines
9.6 KiB
Plaintext
@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)
|
|
{
|
|
|
|
}
|
|
}
|
|
|
|
<style type="text/css">
|
|
.centeredLabel {
|
|
margin: 0 auto;
|
|
padding-left: .25em;
|
|
}
|
|
</style>
|
|
|
|
@using(Html.BeginForm())
|
|
{
|
|
<div class="row" id="abc-table">
|
|
<div class="col">
|
|
<div class="form-row">
|
|
<div class="col-md">
|
|
<div class="input-group mb-2">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Betreff</span>
|
|
</div>
|
|
<input class="form-control" type="text" @disabled id="Subject" name="Subject" value="@Model.Subject" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-row">
|
|
<div class="col-md">
|
|
<div class="input-group mb-2">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Ort</span>
|
|
</div>
|
|
<input class="form-control" type="text" @disabled id="Location" name="Location" value="@Model.Location" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-row">
|
|
<div class="col-md">
|
|
<div class="input-group mb-2">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Start</span>
|
|
</div>
|
|
<input class="form-control" type="@dateInputType" @disabled id="StartDate" name="StartDate" value="@start" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-row">
|
|
<div class="col-md">
|
|
<div class="input-group mb-2">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Ende</span>
|
|
</div>
|
|
<input class="form-control" type="@dateInputType" @disabled id="EndDate" name="EndDate" value="@end" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-row">
|
|
<div class="col-md">
|
|
<div class="input-group mb-2">
|
|
<div class="input-group-prepend">
|
|
<div class="input-group-text">
|
|
@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()
|
|
</div>
|
|
</div>
|
|
<div class="input-group-append">
|
|
<span class="input-group-text">Privat</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md">
|
|
<div class="input-group pl-2 mb-2 justify-content-end">
|
|
<div class="input-group-prepend">
|
|
<div class="input-group-text">
|
|
@Html.DevExpress().CheckBox(
|
|
settings =>
|
|
{
|
|
settings.Name = nameof(SchedulerAppointmentDC.AllDay);
|
|
settings.Width = Unit.Percentage(100);
|
|
settings.ReadOnly = disabled.Length > 0;
|
|
}).Bind(Model.AllDay).GetHtml()
|
|
</div>
|
|
</div>
|
|
<div class="input-group-append">
|
|
<span class="input-group-text">Ganztägig</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
@if(Model.HasRightKalenderMitarbeitertermineAnsehen || Model.HasRightKalenderKliententermineAnsehen || Model.HasRightKalenderRessourcentermineAnsehen)
|
|
{
|
|
<div class="form-row justify-content-center">
|
|
@if(showEmployeeButton)
|
|
{
|
|
@Html.Partial("CustomEmployeeSelectPartial", Model)
|
|
}
|
|
|
|
@if(showCustomerButton)
|
|
{
|
|
@Html.Partial("CustomCustomerSelectPartial", Model)
|
|
}
|
|
|
|
@if(showResourceButton)
|
|
{
|
|
@Html.Partial("CustomResourceSelectPartial", Model)
|
|
}
|
|
</div>
|
|
}
|
|
|
|
<div class="form-row">
|
|
<div class="col-md">
|
|
<div class="form-group">
|
|
<label for="Description">Notiz</label>
|
|
<textarea class="form-control" @disabled id="Description" name="Description">@Model.Description</textarea>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="recurrence-container">
|
|
@{
|
|
var recurrenceSettings = (AppointmentRecurrenceFormSettings) ViewBag.AppointmentRecurrenceFormSettings;
|
|
|
|
recurrenceSettings.Enabled = areButtonsVisible;
|
|
}
|
|
|
|
@Html.DevExpress().AppointmentRecurrenceForm(recurrenceSettings).GetHtml()
|
|
</div>
|
|
|
|
<div class="form-row">
|
|
<div class="col">
|
|
<div class="float-right">
|
|
@if(areButtonsVisible)
|
|
{
|
|
<button type="button" class="btn btn-sm-auto btn-primary mr-2" id="Apply" name="Apply" onclick="OnAppointmentFormSave()">OK</button>
|
|
}
|
|
|
|
<button type="button" class="btn btn-sm-auto btn-primary mr-2" id="Cancel" name="Cancel" onclick="OnAppointmentFormCancel()">@cancelButtonText</button>
|
|
|
|
@if(isDeleteButtonVisible)
|
|
{
|
|
<button type="button" class="btn btn-sm-auto btn-danger" id="Delete" name="Delete" onclick="OnAppointmentFormDelete()">Löschen</button>
|
|
}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div>
|
|
@Html.DevExpress().SchedulerStatusInfo(
|
|
settings =>
|
|
{
|
|
settings.Name = "schedulerStatusInfo";
|
|
settings.Priority = 1;
|
|
settings.SchedulerName = "scheduler";
|
|
}).GetHtml()
|
|
</div>
|
|
</div>
|
|
</div>
|
|
} |