250 lines
8.4 KiB
JavaScript
250 lines
8.4 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();
|
|
|
|
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();
|
|
$("#messagePopup .modal-body").html('<div class="alert alert-danger" role="alert">Das Startdatum muss vor dem Enddatum liegen.</div>');
|
|
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();
|
|
|
|
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;
|
|
}
|
|
}
|
|
|
|
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('<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);
|
|
}
|
|
} |