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").each(function() { $(this).prop("checked", false); }); $("#selected-resources-list").empty(); } function submitInsertAppointmentForm() { showSpinner(); validateAppointmentForm(); } function submitSchedulerDateForm() { showSpinner(); $("#scheduler-date-form").submit(); } function validateAppointmentForm() { 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 = isEmptyOrSpaces($("#scheduler-start-time").val()); var isEndTimeInputEmpty = 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 = startTime === undefined || startTime === null || !startTime.isValid(); var d = endTime === undefined || endTime === null || !endTime.isValid(); if(a || b || c || d || isStartDateInputEmpty || isStartTimeInputEmpty || isEndTimeInputEmpty || isEndDateInputEmpty) { hideSpinner(); $("#messagePopup .modal-body").html(''); showMessagePopup("Fehler"); $("#scheduler-start-time, #scheduler-end-time").val(""); return; } if(endDate.isValid() === false) { endDate = startDate.clone(); } startDate = startDate.hours(startTime.hours()); startDate = startDate.minutes(startTime.minutes()); endDate = endDate.hours(endTime.hours()); endDate = endDate.minutes(endTime.minutes()); if(endDate.isBefore(startDate)) { hideSpinner(); $("#messagePopup .modal-body").html(''); showMessagePopup("Fehler"); return; } var selectedOids = []; var oidString = ""; $("#resources-popup input:checked").each(function() { var id = $(this).attr("id"); selectedOids.push(id.split("-")[0]); }); 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 }).done(function(result) { if(result === undefined || result === null || result.length === 0) { return; } if (result.length > 1) { try { var unavailableResources = $.parseJSON(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(); $("#messagePopup .modal-body").html('"); showMessagePopup("Fehler"); showMessagePopupWithCallback("Überschneidung", null, 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")); }); return; } } catch(error) { console.log("%c" + error.message, "color:red;"); hideSpinner(); return; } } 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) { var isOverlapping = $.parseJSON(result); if(isOverlapping === true) { hideSpinner(); $("#messagePopup .modal-body").html(''); showMessagePopupWithCallback("Überschneidung", null, function() { $("#messagePopup .modal-body").html(); showSpinner(); $("#insert-appointment-form").submit(); }); } 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"); } function toggleAppointmentForm() { var isVisible = $("#form-container").css("display") === "block"; if (isVisible) { hideAppointmentForm(); } else { showAppointmentForm(); } } function changeResourceSelection() { var selectedOids = []; var oidString = ""; $("#resources-popup input:checked").each(function() { var id = $(this).attr("id"); selectedOids.push(id.split("-")[0]); }); for (var i = 0; i < selectedOids.length; i++) { oidString += selectedOids[i] + ","; } $.get(getSelectResourcesForAppointmentUrl(), { resourceOids: oidString }).done(updateSelectedResourceList); } function updateSelectedResourceList(jsonResult) { var list = $("#selected-resources-list"); list.empty(); if (isEmptyOrSpaces(jsonResult)) { return; } var resourceList = $.parseJSON(jsonResult); $.each(resourceList, function(index, customListItem) { var html = "
" + "
" + "
" + "" + customListItem.Name + "
" + "
" + "" + "
" + "
" + "
"; list.append(html); }); } function removeSelectedResource(resourceOid) { $("#relation-item-" + resourceOid).remove(); var checkbox = $("#" + resourceOid + "-checkbox"); if (checkbox.length) { checkbox.prop("checked", false); } changeResourceSelection(); }