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.
496 lines
14 KiB
JavaScript
496 lines
14 KiB
JavaScript
function selectSupportConcept(cb2ScOid) {
|
|
showSpinner();
|
|
$("#CostBearer2SupportConceptOid").val(cb2ScOid);
|
|
$("#selectSupportConceptForm").submit();
|
|
}
|
|
|
|
function setSelectedEmployee() {
|
|
var employeeOid = parseInt($("#employeesDropDown").find(":selected").val());
|
|
|
|
if (isNaN(employeeOid)) {
|
|
return;
|
|
}
|
|
|
|
$.get(getSetServiceRecordEmployeeUrl(), { employeeOid: employeeOid });
|
|
}
|
|
|
|
function checkJson(str) {
|
|
try {
|
|
JSON.parse(str);
|
|
} catch (error) {
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
function serviceDescriptionSelectOnReset(categorySelectId, leistungSelectId, textmoduleContainerId, treeId) {
|
|
setTimeout(function () {
|
|
loadServiceDescriptions(categorySelectId, leistungSelectId, textmoduleContainerId, treeId);
|
|
}, 100);
|
|
}
|
|
|
|
function showAlertMessage(message) {
|
|
$("#form-alert").html(message);
|
|
$("#form-alert").show();
|
|
}
|
|
|
|
function resetCreateForm() {
|
|
$("#serviceRecordCreationForm").trigger("reset");
|
|
|
|
var test = $("#has-any-rating-types").val().toLowerCase() === "true";
|
|
|
|
if (test) {
|
|
$(".goal-rating-badge").text("Bewerten");
|
|
} else {
|
|
$(".goal-rating-badge").text("");
|
|
}
|
|
}
|
|
|
|
function resetSingleBookingForm() {
|
|
$("#singleBookingForm").trigger("reset");
|
|
|
|
var test = $("#has-any-rating-types").val().toLowerCase() === "true";
|
|
|
|
if (test) {
|
|
$(".goal-rating-badge").text("Bewerten");
|
|
} else {
|
|
$(".goal-rating-badge").text("");
|
|
}
|
|
}
|
|
|
|
function submitSingleBookingForm() {
|
|
showSpinner();
|
|
|
|
validateForm($("#singleBookingForm"), null);
|
|
}
|
|
|
|
function submitCreateForm() {
|
|
showSpinner();
|
|
|
|
validateForm($("#serviceRecordCreationForm"), null);
|
|
}
|
|
|
|
function submitEditForm() {
|
|
showSpinner();
|
|
|
|
validateForm($("#serviceRecordEditForm"), null);
|
|
}
|
|
|
|
function resetGroupBookingForm() {
|
|
$("#groupBookingCreationForm").trigger("reset");
|
|
}
|
|
|
|
function submitGroupBookingForm() {
|
|
showSpinner();
|
|
|
|
validateForm($("#groupBookingCreationForm"), null);
|
|
}
|
|
|
|
function submitGroupBookingEditForm() {
|
|
showSpinner();
|
|
|
|
validateForm($("#groupBookingEditingForm"), null);
|
|
}
|
|
|
|
function submitGroupBookingForm() {
|
|
showSpinner();
|
|
|
|
validateForm($("#groupBookingForm"), null);
|
|
}
|
|
|
|
function deactivateGroupBookingForm() {
|
|
$("#employees-button, #category-select, #leistung-select, #start-date, #end-date, #start-time, #end-time, #duration, #distance, textarea, #reset-button, #create-button, #textbausteine-button, #hours-minutes-dropdown-btn, #gb-marker-cb").prop("disabled", true);
|
|
}
|
|
|
|
function activateGroupBookingForm() {
|
|
$("#employees-button, #category-select, #leistung-select, #start-date, #end-date, #start-time, #end-time, #duration, #distance, textarea, #reset-button, #create-button, #textbausteine-button, #hours-minutes-dropdown-btn, #gb-marker-cb").prop("disabled", false);
|
|
}
|
|
|
|
function deleteServiceRecord(serviceRecordOid) {
|
|
showMessagePopupWithCallback("Eintrag löschen", "Sind Sie sicher, dass Sie den Eintrag löschen möchten?",
|
|
function() {
|
|
var url = getValidateServiceRecordDeletionUrl();
|
|
|
|
$.get(url, { serviceRecordOidString: serviceRecordOid }).done(function(result) {
|
|
if (result === "Error") {
|
|
showAlertMessageBox("Fehler", "Es ist ein Fehler aufgetreten", null, false);
|
|
return;
|
|
}
|
|
|
|
var form = $("#deletion-form");
|
|
|
|
if(result.length === 0) {
|
|
if(form.length !== 0) {
|
|
logError("Sollte nicht mehr eintreffen; serviceRecordOid: " + serviceRecordOid);
|
|
$("#oidHolder").val(serviceRecordOid);
|
|
|
|
showSpinner();
|
|
form.submit();
|
|
}
|
|
} else { // Meldungen
|
|
hideSpinner();
|
|
|
|
var validationResult = $.parseJSON(result);
|
|
|
|
if(validationResult.Message === null) {
|
|
$("#oidHolder").val(serviceRecordOid);
|
|
|
|
showSpinner();
|
|
form.submit();
|
|
return;
|
|
}
|
|
|
|
$("#oidHolder").val(serviceRecordOid);
|
|
|
|
var kannTrotzdemGespeichertWerden = validationResult.KannTrotzdemGespeichertWerden;
|
|
|
|
var validationCallback = function() {
|
|
$("#messagePopup .modal-body").html();
|
|
if(kannTrotzdemGespeichertWerden) {
|
|
showSpinner();
|
|
form.submit();
|
|
}
|
|
};
|
|
|
|
if(kannTrotzdemGespeichertWerden) {
|
|
showWarningMessageBox("Fehler", validationResult.Message, validationCallback, false);
|
|
} else {
|
|
showAlertMessageBox("Fehler", validationResult.Message, validationCallback, false);
|
|
}
|
|
}
|
|
});
|
|
}, false);
|
|
}
|
|
|
|
function validateForm(form, prefix) {
|
|
if(form === undefined || form === null) {
|
|
hideSpinner();
|
|
return;
|
|
}
|
|
|
|
if(prefix === undefined || prefix === null) {
|
|
prefix = "";
|
|
}
|
|
|
|
var errorMessage = "";
|
|
var isNoticeMandatory = getIsDocumentationMandatory();
|
|
var numberOfNoticeTextareas = getNumberOfDokutypes();
|
|
|
|
var isValid = true;
|
|
|
|
if(isNoticeMandatory) {
|
|
if(numberOfNoticeTextareas === 0) {
|
|
var doku = $("#" + prefix + "dokufeld").val();
|
|
|
|
isValid = doku.length > 0;
|
|
} else {
|
|
for(var i = 0; i < numberOfNoticeTextareas; i++) {
|
|
var d = $("#" + prefix + "doku-textarea-" + i).val();
|
|
|
|
isValid = d.length > 0;
|
|
|
|
if(isValid) {
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
if(isValid === false) {
|
|
errorMessage = "Bitte füllen Sie " + (numberOfNoticeTextareas > 1 ? "mindestens ein" : "das") + " Dokumentationsfeld aus.<br/>";
|
|
}
|
|
}
|
|
|
|
var startAndEndDates = getStartAndEndDate(prefix);
|
|
|
|
if(startAndEndDates === null && isValid) {
|
|
isValid = false;
|
|
errorMessage += "Die Datums- und / oder Zeitangaben sind nicht korrekt.<br/>";
|
|
}
|
|
|
|
var isInEditingMode = getIsInEditingMode();
|
|
|
|
if(isValid === false) {
|
|
hideSpinner();
|
|
|
|
showAlertMessageBox("Fehler",
|
|
errorMessage,
|
|
function() {
|
|
$("#messagePopup .modal-body").html();
|
|
},
|
|
true);
|
|
|
|
return;
|
|
}
|
|
|
|
if(startAndEndDates !== null && isValid) {
|
|
var start = startAndEndDates[0];
|
|
var end = startAndEndDates[1];
|
|
|
|
$.get(getCheckRightsUrl(), { von: start.format("DD.MM.YYYY"), bis: end.format("DD.MM.YYYY"), inEditMode: isInEditingMode, dateString: start.format("DD.MM.YYYY"), startString: start.format("HH:mm"), endString: end.format("HH:mm") }).done(function (result) {
|
|
var message = $.parseJSON(result);
|
|
|
|
if(message.Message === null) {
|
|
form.submit();
|
|
} else {
|
|
hideSpinner();
|
|
|
|
var kannTrotzdemGespeichertWerden = message.KannTrotzdemGespeichertWerden;
|
|
|
|
var testCallback = function () {
|
|
$("#messagePopup .modal-body").html();
|
|
if(kannTrotzdemGespeichertWerden) {
|
|
showSpinner();
|
|
form.submit();
|
|
}
|
|
};
|
|
|
|
if(kannTrotzdemGespeichertWerden) {
|
|
showWarningMessageBox("Fehler", message.Message, testCallback, false);
|
|
} else {
|
|
showAlertMessageBox("Fehler", message.Message, testCallback, false);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
function showGoalRatingPopup(goalOid) {
|
|
try {
|
|
$("#goal-rating-popup").modal("show");
|
|
$("#goal-to-rate-oid").val(goalOid);
|
|
} catch (error) {
|
|
showErrorPopup(error);
|
|
}
|
|
}
|
|
|
|
function hideGoalRatingPopup() {
|
|
try {
|
|
$("#goal-rating-popup").modal("hide");
|
|
} catch (error) {
|
|
showErrorPopup(error);
|
|
}
|
|
}
|
|
|
|
function rateGoal(ratingTypeOid) {
|
|
try {
|
|
var url = getRateSelectedGoalUrl();
|
|
|
|
var goalOid = $("#goal-to-rate-oid").val();
|
|
|
|
$.get(url, { ratingTypeOid: ratingTypeOid, goalOid: goalOid }).done(
|
|
function (result) {
|
|
var obj = $.parseJSON(result);
|
|
|
|
$("#goal-rating-" + goalOid).text(obj.RatingName);
|
|
|
|
hideGoalRatingPopup();
|
|
$("#goal-to-rate-oid").val("");
|
|
}
|
|
);
|
|
} catch(error) {
|
|
showErrorPopup(error);
|
|
}
|
|
}
|
|
|
|
function checkChildNodes(parentOid) {
|
|
var rootElement = $("#c-" + parentOid);
|
|
var checkboxes = rootElement.find("input");
|
|
|
|
var isChecked = $("#" + parentOid).prop("checked") === true;
|
|
|
|
$.each(checkboxes, function(index, checkbox) {
|
|
var box = $(checkbox);
|
|
var id = box.attr("id");
|
|
|
|
if(!id !== parentOid) {
|
|
box.prop("checked", isChecked);
|
|
}
|
|
});
|
|
}
|
|
|
|
function getCheckedGoals() {
|
|
var rootElement = $("#goals-tree");
|
|
var checkboxes = rootElement.find("input");
|
|
|
|
var selectedGoals = "";
|
|
|
|
$.each(checkboxes, function(index, checkbox) {
|
|
var box = $(checkbox);
|
|
var id = box.attr("id");
|
|
|
|
if(box.prop("checked") === true && !id.includes("goal")) {
|
|
selectedGoals += id + ";";
|
|
}
|
|
});
|
|
|
|
return selectedGoals.substr(0, selectedGoals.length - 1);
|
|
}
|
|
|
|
function updateSelectedGoals() {
|
|
var selectedGoals = getCheckedGoals();
|
|
|
|
$.get(getUpdateGoalsUrl(), { pGoalOids: selectedGoals });
|
|
}
|
|
|
|
function validateDistanceInput() {
|
|
checkNumberInput("distance");
|
|
}
|
|
|
|
function checkNumberInput(inputId) {
|
|
var input = $("#" + inputId).val();
|
|
|
|
var isNum = /^\d+$/.test(input);
|
|
|
|
return isNum;
|
|
}
|
|
|
|
// Wird bei der Validierung des Formulars benutzt
|
|
function getStartAndEndDate(prefix) {
|
|
if(prefix === undefined || prefix === null) {
|
|
prefix = "";
|
|
}
|
|
|
|
var startTimePicker = $("#" + prefix + "start-time-picker");
|
|
var endTimePicker = $("#" + prefix + "end-time-picker");
|
|
var startDatePicker = $("#" + prefix + "start-date-picker");
|
|
var endDatePicker = $("#" + prefix + "end-date-picker");
|
|
|
|
// Bei leeren Start- und Endfeldern. Muss ein Dummydate zurückgeben,
|
|
// damit das Speichern ohne Angabe der Start- und Endzeit möglich ist.
|
|
if($("#" + prefix + "start-time").val().length === 0 || $("#" + prefix + "end-time").val().length === 0) {
|
|
var bareDate = new Date();
|
|
|
|
bareDate.setHours(0);
|
|
bareDate.setMinutes(0);
|
|
bareDate.setSeconds(1);
|
|
|
|
var dummyDate = moment(bareDate);
|
|
|
|
return [dummyDate, dummyDate];
|
|
}
|
|
|
|
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 = endDatePicker.length === 0 ? false : 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) {
|
|
return null;
|
|
}
|
|
|
|
if(endDatePicker.length === 0 || 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)) {
|
|
return null;
|
|
}
|
|
|
|
return [startDate, endDate];
|
|
}
|
|
|
|
function textCategoryOnClick(categoryId) {
|
|
var childrenContainer = $("#" + categoryId + "-children-container");
|
|
var iconSpan = $("#" + categoryId + "-icon-span");
|
|
|
|
var displayValue = childrenContainer.css("display");
|
|
|
|
var classToRemove = displayValue === "block" ? "fa-angle-down" : "fa-angle-up";
|
|
var classToAdd = displayValue === "block" ? "fa-angle-up" : "fa-angle-down";
|
|
|
|
iconSpan.removeClass(classToRemove);
|
|
iconSpan.addClass(classToAdd);
|
|
|
|
childrenContainer.toggle();
|
|
}
|
|
|
|
function supportConceptSearchOnChange() {
|
|
try {
|
|
var text = $("#support-concept-search-input").val().toLowerCase();
|
|
|
|
var links = $(".blubb-test");
|
|
|
|
if (text.length === 0) {
|
|
links.show();
|
|
}
|
|
|
|
$.each(links,
|
|
function(index, item) {
|
|
var supportConcept = $(item);
|
|
|
|
if(supportConcept.find(".supportconcept-name-header").text().toLowerCase().includes(text)) {
|
|
supportConcept.show();
|
|
} else {
|
|
supportConcept.hide();
|
|
}
|
|
});
|
|
|
|
} catch (error) {
|
|
showErrorPopup(error);
|
|
}
|
|
}
|
|
|
|
function resetSupportConceptSearch() {
|
|
try {
|
|
$("#support-concept-search-input").val("");
|
|
$(".blubb-test").show();
|
|
} catch (error) {
|
|
showErrorPopup(error);
|
|
}
|
|
}
|
|
|
|
function getSignatureImage(serviceRecordOid, signatureOid) {
|
|
try {
|
|
var url = getGetSignatureImageUrl();
|
|
|
|
$.get(url, { serviceRecordOid: serviceRecordOid, signatureOid: signatureOid }).done(function(textAndImage) {
|
|
var kek = textAndImage.split(";");
|
|
|
|
var serviceRecordDescription = kek[0];
|
|
var imageData = kek[1] + ";" + kek[2];
|
|
|
|
$("#signature-text").html(serviceRecordDescription);
|
|
$("#signature-img").attr("src", imageData);
|
|
|
|
$("#signature-img-popup").modal("show");
|
|
});
|
|
} catch (error) {
|
|
showErrorPopup(error);
|
|
}
|
|
}
|
|
|
|
function setServiceDescription(id) {
|
|
try {
|
|
var url = getSetServiceDescriptionUrl();
|
|
|
|
var selectedServiceDescription = $("#" + id).find(":selected").val();
|
|
|
|
$.get(url, { pServiceDescriptionOid: selectedServiceDescription});
|
|
} catch (error) {
|
|
showErrorPopup(error);
|
|
}
|
|
} |