538 lines
16 KiB
JavaScript
538 lines
16 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];
|
|
|
|
var [doku1, doku2, doku3, doku4, doku5] = getDokuTexte();
|
|
$.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"), doku1, doku2, doku3, doku4, doku5 }).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 getDokuTexte() {
|
|
try {
|
|
var noticeList = [null, null, null, null, null];
|
|
|
|
var isMultiBooking = $("#mb-dokufeld").length > 0 || $("#mb-doku-textarea-0").length > 0;
|
|
|
|
var multiBookingPrefix = isMultiBooking ? "mb-" : "";
|
|
|
|
var hasMultipleDokufelder = $("#" + multiBookingPrefix + "dokufeld").length === 0;
|
|
|
|
var dokufeldCounter = 0;
|
|
|
|
if(hasMultipleDokufelder) {
|
|
for(var i = 0; i < 5; i++) {
|
|
var dokufeld = $("#" + multiBookingPrefix + "doku-textarea-" + i);
|
|
|
|
if(dokufeld.length > 0) {
|
|
noticeList[i] = dokufeld.val();
|
|
dokufeldCounter++;
|
|
}
|
|
}
|
|
} else {
|
|
noticeList[0] = $("#" + multiBookingPrefix + "dokufeld").val();
|
|
dokufeldCounter = 1;
|
|
}
|
|
|
|
var x = "";
|
|
for (var ii = 0; ii < dokufeldCounter; ii++) {
|
|
x += noticeList[ii];
|
|
|
|
if (ii < noticeList.length - 1) {
|
|
x += ", ";
|
|
}
|
|
}
|
|
|
|
return noticeList;
|
|
} catch (error) {
|
|
showErrorPopup(error);
|
|
}
|
|
}
|
|
|
|
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);
|
|
}
|
|
} |