Files
BeWoPlaner/BeWoPlanerMobil/Scripts/ownSoft-Scripts/view-scripts/scheduler.js
Lyndon Jetten 3ca4ec5323 Das Gruppenbuchungsformular hat jetzt die Summe der Ziele aller ausgewählten Hilfepläne und die Schnittmenge deren Leistungen und Kategorien.
Das Mehrfachbuchungsformular hat ebenfalls die Schnittmenge der Leistungen und Kategorien von den ausgewählten Hilfeplänen.

Das Caching ist wieder aktiviert. Und lädt pro Post-Aufruf nur noch einmal 13 MB und danach nur noch 300 kb herunter.

Überall konsequent geprüft, ob das Model nicht null ist und falls dem so ist, wird ausgeloggt, damit es zu keinen Fehlern mehr kommt.
2024-06-26 12:29:22 +02:00

269 lines
9.2 KiB
JavaScript

function resetInsertAppointmentForm() {
$.get(getResetSelectedAppointmentUrl())
.always(function() {
if($(window).width() < 768) {
hideAppointmentForm();
}
});
$("#scheduler-start-time, #scheduler-end-time, #subject, #location, #notice").val("");
$("#scheduler-start-date, #scheduler-end-date").val(moment().format("DD.MM.YYYY"));
$("#resources-popup input:checked, #customers-popup input:checked, #employees-popup input:checked").each(function() {
$(this).prop("checked", false);
});
$("#selected-resources-list, #selected-employees-list, #selected-customers-list").empty();
$("#IsAllDay").prop("checked", false);
$("#IsPrivate").prop("checked", false);
}
function submitInsertAppointmentForm() {
showSpinner();
validateAppointmentForm();
}
function submitSchedulerDateForm() {
showSpinner();
$("#scheduler-date-form").submit();
}
function validateAppointmentForm() {
var isAllDay = $("#IsAllDay").prop("checked") === true;
var startTimePicker = $("#scheduler-start-time-picker");
var startDatePicker = $("#scheduler-start-date-picker");
var endTimePicker = $("#scheduler-end-time-picker");
var endDatePicker = $("#scheduler-end-date-picker");
var isStartTimeInputEmpty = isAllDay ? false : isEmptyOrSpaces($("#scheduler-start-time").val());
var isEndTimeInputEmpty = isAllDay ? false : isEmptyOrSpaces($("#scheduler-end-time").val());
var isStartDateInputEmpty = isEmptyOrSpaces($("#scheduler-start-date").val());
var isEndDateInputEmpty = isEmptyOrSpaces($("#scheduler-end-date").val());
startTimePicker.datetimepicker("show");
startTimePicker.datetimepicker("hide");
startDatePicker.datetimepicker("show");
startDatePicker.datetimepicker("hide");
endTimePicker.datetimepicker("show");
endTimePicker.datetimepicker("hide");
endDatePicker.datetimepicker("show");
endDatePicker.datetimepicker("hide");
var startTime = startTimePicker.datetimepicker("date");
var endTime = endTimePicker.datetimepicker("date");
var startDate = startDatePicker.datetimepicker("date");
var endDate = endDatePicker.datetimepicker("date");
var a = startDate === undefined || startDate === null || !startDate.isValid();
var b = endDate === undefined || endDate === null || !endDate.isValid();
var c = isAllDay ? false : startTime === undefined || startTime === null || !startTime.isValid();
var d = isAllDay ? false : endTime === undefined || endTime === null || !endTime.isValid();
if (a || b || c || d || isStartDateInputEmpty || isStartTimeInputEmpty || isEndTimeInputEmpty || isEndDateInputEmpty) {
hideSpinner();
logInfo3("Datumsproblem!");
showMessagePopupWithHtml("Fehler", '<div class="alert alert-danger" role="alert">Die Zeit- und/oder Datumsangaben sind nicht korrekt.</div>');
$("#scheduler-start-time, #scheduler-end-time").val("");
return;
}
if(endDate.isValid() === false) {
endDate = startDate.clone();
}
var startHours = 0;
var startMinutes = 0;
var endHours = 0;
var endMinutes = 0;
if(isAllDay === false) {
startHours = startTime.hours();
startMinutes = startTime.minutes();
endHours = endTime.hours();
endMinutes = endTime.minutes();
}
startDate = startDate.hours(startHours);
startDate = startDate.minutes(startMinutes);
endDate = endDate.hours(endHours);
endDate = endDate.minutes(endMinutes);
if(endDate.isBefore(startDate)) {
hideSpinner();
showMessagePopupWithHtml("Fehler", '<div class="alert alert-danger" role="alert">Das Startdatum muss vor dem Enddatum liegen.</div>');
return;
}
var selectedOids = [];
var oidString = "";
$("#resources-popup input:checked").each(function() {
var id = $(this).attr("id");
logInfo(id);
selectedOids.push(id.split("-")[1]);
});
for(var i = 0; i < selectedOids.length; i++) {
oidString += selectedOids[i] + ",";
}
$.get(getCheckResourcesAvailabilityUrl(), { start: startDate.format("DD.MM.YYYY HH:mm"), end: endDate.format("DD.MM.YYYY HH:mm"), resourceOids: oidString, allDay: isAllDay }).done(function(result) {
if (result.length > 1) {
try {
hideSpinner();
if (result.includes("Fehler!")) {
showErrorMessagePopup(result.substring(7));
return;
} else {
showMessagePopupWithHtml("Überschneidung",
result,
function() {
$("#messagePopup .modal-body").html();
showSpinner();
insertOrUpdateAppointment(startDate.format("DD.MM.YYYY"), endDate.format("DD.MM.YYYY"), startDate.format("HH:mm"), endDate.format("HH:mm"));
},
false);
}
// ALT!
//var unavailableResources = parseJason(result);
//var resourceCount = 0;
//var names = "";
//$.each(unavailableResources, function(index, resource) {
// if (names.length > 1) {
// names += ", ";
// }
// resourceCount++;
// names += resource.Name;
//});
//var unavailableResourcesMessage;
//if(resourceCount > 0) {
// if(resourceCount > 1) {
// unavailableResourcesMessage = "Einige der ausgewählten Ressourcen (" + names + ") sind zum gewählten Zeitpunkt nicht verfügbar.";
// } else {
// unavailableResourcesMessage = "Eine der ausgewählten Ressourcen (" + names + ") ist zum gewählten Zeitpunkt nicht verfügbar.";
// }
// hideSpinner();
// showWarningMessageBox("Überschneidung", unavailableResourcesMessage, function() {
// $("#messagePopup .modal-body").html();
// showSpinner();
// insertOrUpdateAppointment(startDate.format("DD.MM.YYYY"), endDate.format("DD.MM.YYYY"), startDate.format("HH:mm"), endDate.format("HH:mm"));
// }, false);
// return;
//}
} catch (error) {
showErrorPopup(error);
return;
}
} else {
insertOrUpdateAppointment(startDate.format("DD.MM.YYYY"), endDate.format("DD.MM.YYYY"), startDate.format("HH:mm"), endDate.format("HH:mm"));
}
});
}
function insertOrUpdateAppointment(formattedStartDate, formattedEndDate, formattedStartTime, formattedEndTime) {
$.get(
getCheckForOverlappingAppointmentsUrl(),
{
startDateRaw: formattedStartDate,
endDateRaw: formattedEndDate,
startTimeRaw: formattedStartTime,
endTimeRaw: formattedEndTime
}
).done(function(result) {
if(false === checkJson(result)) {
logWarning("insertOrUpdateAppointment: Der zurückgegebene Wert ist kein gültiges JSON!");
return;
}
var isOverlapping = parseJason(result);
if(isOverlapping === true) {
hideSpinner();
$("#messagePopup .modal-body").html('<div class="alert alert-warning" role="alert">Dieser Termin überschneidet sich mit einem anderen bereits existierenden Termin.<br/> Möchten Sie ihn wirklich speichern?</div>');
showMessagePopupWithCallback(
"Überschneidung",
null,
function() {
$("#messagePopup .modal-body").html();
showSpinner();
$("#insert-appointment-form").submit();
},
false);
} else {
$("#insert-appointment-form").submit();
}
});
}
function hideAppointmentForm() {
$("#form-container").addClass("d-none d-sm-none");
}
function showAppointmentForm() {
$("#form-container").removeClass("d-none d-sm-none");
calcPrependTextSizes();
}
function toggleAppointmentForm() {
var isVisible = $("#form-container").css("display") === "block";
if (isVisible) {
hideAppointmentForm();
} else {
showAppointmentForm();
}
}
function listSearchOnChange(searchInputId, entryClass, textClass) {
try {
var text = $("#" + searchInputId).val().toLowerCase();
var entries = $("." + entryClass);
if (text.length === 0) {
entries.show();
}
$.each(entries, function (index, item) {
var customer = $(item);
if (customer.find("." + textClass).text().toLowerCase().includes(text)) {
customer.show();
} else {
customer.hide();
}
});
} catch (error) {
showErrorPopup(error);
}
}
function resetSearch(searchInputId, entryClass) {
try {
$("#" + searchInputId).val("");
$("." + entryClass).show();
} catch (error) {
showErrorPopup(error);
}
}