Files
BeWoPlaner/BeWoPlanerMobil/Views/DevExpressScheduler/CustomAppointmentFormPartial.cshtml
2026-06-29 13:45:41 +02:00

262 lines
8.5 KiB
Plaintext

@model BeWoPlanerMobil.Models.AppointmentModel
@using BS.Shared.DataContracts
@using DevExpress.Web.Mvc.UI
@{
Html.EnableClientValidation();
Html.EnableUnobtrusiveJavaScript();
var isNew = Model.Oid 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);
}
<style type="text/css">
.centeredLabel {
margin: 0 auto;
padding-left: .25em;
}
</style>
@using(Html.BeginForm())
{
<table id="abc-table" class="w-100">
@* Betreff *@
<tr>
<td colspan="2">
<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>
</td>
</tr>
@* Ort *@
<tr>
<td colspan="2">
<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>
</td>
</tr>
@* Start *@
<tr>
<td>
<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>
</td>
<td>
<div class="input-group pl-2 mb-2">
<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>
</td>
</tr>
@* Ende *@
<tr>
<td colspan="2">
<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>
</td>
</tr>
@* Privat *@
<tr>
<td >
<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>
</td>
</tr>
@if(Model.HasRightKalenderMitarbeitertermineAnsehen || Model.HasRightKalenderKliententermineAnsehen || Model.HasRightKalenderRessourcentermineAnsehen)
{
<tr>
@* colspan="4" *@
<td colspan="2">
<table class="w-100">
<tr>
<td style="width: 33%; padding: .25em;">
@if(showEmployeeButton)
{
@Html.Partial("CustomEmployeeSelectPartial", Model)
}
</td>
<td style="width: 33%; padding: .25em;">
@if(showCustomerButton)
{
@Html.Partial("CustomCustomerSelectPartial", Model)
}
</td>
<td style="width: 33%; padding: .25em;">
@if(showResourceButton)
{
@Html.Partial("CustomResourceSelectPartial", Model)
}
</td>
</tr>
</table>
</td>
</tr>
}
@* Notiz *@
<tr>
<td colspan="2">
<div class="form-group">
<label for="Description">Notiz</label>
<textarea class="form-control" @disabled id="Description" name="Description">@Model.Description</textarea>
</div>
</td>
</tr>
</table>
@Html.DevExpress().AppointmentRecurrenceForm(ViewBag.AppointmentRecurrenceFormSettings).GetHtml()
<table style="width: 100%">
<tr>
@if(areButtonsVisible)
{
<button type="button" class="btn btn-primary mr-2" id="Apply" name="Apply" onclick="OnAppointmentFormSave()">OK</button>
}
<button type="button" class="btn btn-primary mr-2" id="Cancel" name="Cancel" onclick="OnAppointmentFormCancel()">@cancelButtonText</button>
@if(isDeleteButtonVisible)
{
<button type="button" class="btn btn-danger" id="Delete" name="Delete" onclick="OnAppointmentFormDelete()">Löschen</button>
}
</tr>
</table>
<table class="w-100">
<tr>
<td style="width: 100%;">
@Html.DevExpress().SchedulerStatusInfo(
settings =>
{
settings.Name = "schedulerStatusInfo";
settings.Priority = 1;
settings.SchedulerName = "scheduler";
}).GetHtml()
</td>
</tr>
</table>
}