Files
BeWoPlaner/BeWoPlanerMobil/Scripts/ownSoft-Scripts/view-scripts/scheduler.js

264 lines
9.0 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) {
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);
}
}