Mitarbeiterstundenkonto: Rechte werden wie im FaC beachtet Ressourcenverfügbarkeitsprüfung zeigt jetzt Intervalle, in denen die ausgewählten Ressourcen bereits gebucht sind an und von wem, sofern man diesen Mitarbeiter sehen darf. FaC: Ressourcenverfügbarkeitsprüfung zeigt jetzt Intervalle, in denen die ausgewählten Ressourcen bereits gebucht sind an und von wem, sofern man diesen Mitarbeiter sehen darf.
264 lines
9.0 KiB
JavaScript
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 = $.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;
|
|
}
|
|
} 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 = $.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);
|
|
}
|
|
} |