Files
BeWoPlaner/BeWoPlanerMobil/Views/Main/GroupBookingFormPartial.cshtml

339 lines
14 KiB
Plaintext

@using BeWoPlanerMobil.Service
@using BeWoPlanerMobil.Util
@using BS.Shared
@model BeWoPlanerMobil.Models.MainModel
@{
if(TempData[TempDataConstants.DoLogoutKey] is true)
{
<text>
<script type="text/javascript">
$("#second-logout-form").submit();
</script>
</text>
}
}
<script type="text/javascript">
function removeSupportConceptCostBearerRel(relOid) {
showSpinner();
$(`#gb-cb2sc-checkbox-${relOid}`).prop("checked", false);
updateLocallyStoredGroupBookingCb2ScRelOids();
$("#gb-selection-container").load("@Url.Action("RemoveSupportConceptCostbearerRel")", {relOid: relOid}, function() {
if($("#goals-tree").length <= 0) {
toggleGroupBookingForm();
if($("#tree").length <= 0) {
hideSpinner();
return;
}
$("#tree").load("@Url.Action("LoadUpToDateTextModules")", function() {
hideSpinner();
});
}
$("#goals-tree").load("@Url.Action("ReloadGoals")", function() {
toggleGroupBookingForm();
if($("#tree").length <= 0) {
hideSpinner();
return;
}
$("#tree").load("@Url.Action("LoadUpToDateTextModules")", function() {
hideSpinner();
});
});
});
}
function updateLocallyStoredGroupBookingCb2ScRelOids() {
let cb2ScOidString = "";
const selectedCb2ScRelOids = $("#gb-supportconcepts input:checked");
selectedCb2ScRelOids.each(function() {
cb2ScOidString += `${$(this).attr("value")},`;
});
if(selectedCb2ScRelOids.length === 0) {
localStorage.removeItem(`@MobileSessionFacade.LocalStorageKey-GbCb2ScRelOids`);
} else {
window.updateCbScRelOids("gb", cb2ScOidString.slice(0, -1));
}
}
</script>
@if(Model != null)
{
var submitButtonText = Model.IsInEditingMode ? "Speichern" : "Anlegen";
using(Html.BeginForm("CreateOrUpdateGroupBooking", "Main", FormMethod.Post, new { id = "groupBookingForm" }))
{
var startDate = Model.SelectedServiceRecord?.Start?.ToString("yyyy-MM-dd") ?? DateTime.Today.ToString("yyyy-MM-dd");
var endDate = Model.SelectedServiceRecord?.End?.ToString("yyyy-MM-dd") ?? DateTime.Today.ToString("yyyy-MM-dd");
var distance = Model.DistanceToEdit;
var notice0 = Model.SelectedServiceRecord?.Notice ?? string.Empty;
var noticeList = new[] { string.Empty, string.Empty, string.Empty, string.Empty, string.Empty };
if(Model.SelectedServiceRecord?.NoticeList != null)
{
var selectedNoticeList = Model.SelectedServiceRecord.NoticeList;
for(var i = 0; i < selectedNoticeList.Count; i++)
{
noticeList[i] = selectedNoticeList[i] ?? string.Empty;
}
}
<div class="mt-3 booking-form-container">
<div class="form-row">
<div class="col-md">
<div class="alert alert-danger collapse" role="alert" id="form-alert">
</div>
</div>
</div>
@* Hilfepläne und Mitarbeiter *@
<div id="gb-selection-container">
@Html.Partial("GroupBookingSelectionPartial", Model)
</div>
@* ----- Marker ----- *@
@if(Model.ShowMarker)
{
var markerCheckedValue = Model.SelectedServiceRecord?.ServiceRecordType == ServiceRecordTypeId.Content ? "checked" : string.Empty;
<div class="form-row mt-2">
<div class="col-md">
<div class="custom-control custom-checkbox custom-control-inline">
<input type="checkbox" onchange="window.updateMarker('gb', $(this).val())" class="custom-control-input" name="marker-cb" id="gb-marker-cb" @markerCheckedValue />
<label class="custom-control-label" for="gb-marker-cb">Marker</label>
</div>
</div>
</div>
}
@* ----- Betrag ----- *@
@if(Model.ShowBetrag)
{
var betrag = string.Empty;
if(Model.SelectedServiceRecord?.Betrag != null && Model.SelectedServiceRecord.Betrag.Value > 0)
{
betrag = Model.SelectedServiceRecord.Betrag.Value.ToString("#.00");
}
<div class="form-row mt-2">
<div class="col-md">
<div class="form-group my-0">
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text prepend-input-group-text">
Betrag
</div>
</div>
<input class="form-control" onchange="window.updateBetrag('gb', $(this).val())" type="text" autocomplete="on" id="gb-betrag" name="betrag" value="@betrag" />
<div class="input-group-append">
<div class="input-group-text">€</div>
</div>
</div>
</div>
</div>
</div>
}
@* Trennstrich *@
<hr class="py-0 mt-2 mb-0" />
@* Start- und Enddatum *@
@{
var columnWidth = Model.IsEndDateVisible ? "col-md-6" : "col";
}
<div class="form-row">
<div class="@columnWidth mt-2">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">
Startdatum
</span>
</div>
<input class="form-control" type="date" name="Datum" id="gb-start-date-input" onchange="calcDuration('gb', false, true, false); window.updateStartDate('gb', $(this).val());" value="@startDate" />
</div>
</div>
@if(Model.IsEndDateVisible)
{
<div class="col-md-6 mt-2">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">
Enddatum
</span>
</div>
<input class="form-control" type="date" name="Enddatum" id="gb-end-date-input" onchange="calcDuration('gb', false, false, true); window.updateEndDate('gb', $(this).val());" value="@endDate"/>
</div>
</div>
}
</div>
@* Von und Bis *@
<div class="form-row">
@{
var startTimeValue = Model.StartTimeToEdit;
var endTimeValue = Model.EndTimeToEdit;
var divisor = Model.SelectedDurationUnit == "Stunden" ? 60 : 1;
var durationValue = Model.DurationToEdit;
if(Model.SetStartTimeToEndTimeAfterSave && !Model.IsInEditingMode && TempData[TempDataConstants.AfterValidationStateKey] is false)
{
startTimeValue = Model.NewStartTime;
endTimeValue = Model.NewEndTime;
if(Model.NewDuration.HasValue)
{
durationValue = (Model.NewDuration / divisor).ToString();
}
}
}
<div class="col mt-2">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">
Von
</span>
</div>
<input class="form-control" type="time" name="Start" id="gb-start-time-input" onchange="calcDuration('gb', false, true, false); window.updateStartTime('gb', $(this).val());" value="@startTimeValue" />
<span class="input-group-text rounded-0 border-left-0 border-right-0">
Bis
</span>
<input class="form-control" type="time" name="Ende" id="gb-end-time-input" onchange="calcDuration('gb', false, false, true); window.updateEndTime('gb', $(this).val());" value="@endTimeValue" />
</div>
</div>
</div>
@* Dauer und Stunden/Minuten-Auswahl *@
<div class="form-row">
<div class="col-md">
<div class="form-group my-0">
<div class="input-group mt-2">
<div class="input-group-prepend">
@{
var labelText = Model.EinheitZeiterfassung == 1 ? "Dauer (h)" : "Dauer";
}
<div class="input-group-text prepend-input-group-text" id="gb-duration-label">
@labelText
</div>
</div>
<input type="text" autocomplete="on" class="form-control" id="gb-duration-input" name="Dauer" onchange="beiDaueraenderung('gb'); window.updateDuration('gb', $(this).val());" value="@durationValue">
@if(Model.IsZeiterfassungInStdMin)
{
<div class="input-group-append">
<button id="gb-hours-minutes-dropdown-btn" class="btn btn-outline-primary dropdown-toggle" type="button" data-toggle="dropdown">
@Model.SelectedDurationUnit
</button>
<div class="dropdown-menu">
<a class="dropdown-item hours-minutes-link" href="#">Minuten</a>
<a class="dropdown-item hours-minutes-link" href="#">Stunden</a>
</div>
</div>
}
</div>
</div>
</div>
</div>
@* Gefahrene Kilometer *@
@if(Model.ShowDistanceField)
{
<div class="form-row">
<div class="col-md">
<div class="form-group my-0">
<div class="input-group mt-2">
<div class="input-group-prepend">
<div class="input-group-text">Gefahrene Kilometer</div>
</div>
<input type="text" autocomplete="on" class="form-control" id="gb-distance-input" name="Distanz" onchange="validateDistanceInput(); window.updateDistance('gb', $(this).val());" value="@distance">
</div>
</div>
</div>
</div>
}
@* Textbausteine *@
@if(Model.HasRightToSeeTextModules)
{
<div class="form-row" id="textmodule-container">
<div class="col-md">
<button type="button" class="btn btn-primary form-control mt-2" data-toggle="modal" data-target="#textbausteine-popup" id="gb-textbausteine-btn">Textbausteine</button>
</div>
</div>
}
@* Dokumentation *@
<div class="form-row">
<div class="col-md mt-2">
@if(Model.NumberOfDokuTypes == 0)
{
<div class="form-group">
<label for="gb-doku-textarea-5">Dokumentation</label>
<textarea class="form-control" onchange="window.updateDokuText('gb', $(this).val(), 5)" autocomplete="on" name="Dokumentation6" id="gb-doku-textarea-5">@notice0</textarea>
</div>
}
else
{
<ul class="nav nav-tabs" role="tab-list">
@for(var i = 0; i < Model.Dokutypes.Length; i++)
{
var currentDokuType = Model.Dokutypes[i];
<li class="nav-item">
<a href="#gb-doku_@i" id="gb-doku_@i-tab" data-toggle="tab" role="tab" class="nav-link@(i == 0 ? " active" : string.Empty)">
@currentDokuType.DisplayName
</a>
</li>
}
</ul>
<div class="tab-content" id="dokufelderTab">
@for(var i = 0; i < Model.Dokutypes.Length; i++)
{
var textareaName = i + 1 < 1 ? "Dokumentation" : "Dokumentation" + (i + 1);
<div class="tab-pane show@(i == 0 ? " active" : string.Empty)" id="gb-doku_@i" role="tabpanel">
<textarea onchange="window.updateDokuText('gb', $(this).val(), @i)" class="form-control doku-form-control" autocomplete="on" id="gb-doku-textarea-@i" name="@textareaName">@noticeList[i]</textarea>
</div>
}
</div>
}
</div>
</div>
</div>
}
<div class="w-100 mt-2">
<button type="button" class="btn btn-primary float-right ml-1" id="create-button" onclick="submitGroupBookingForm()">@submitButtonText</button>
@if(Model.IsInTransferMode)
{
using(Html.BeginForm("ResetTransferMode", "Main", FormMethod.Post))
{
<button type="submit" id="reset-button" class="btn btn-primary float-right" onclick="showSpinner()">Abbrechen</button>
}
}
else
{
using(Html.BeginForm("ResetEditingMode", "Main", FormMethod.Post))
{
<button type="submit" id="reset-button" class="btn btn-primary float-right" onclick="showSpinner()">Abbrechen</button>
}
}
@Html.Partial("RestoreServiceRecordInputsPartial", Model)
</div>
}