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").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").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.
"; } } var startAndEndDates = getStartAndEndDate(prefix); if (startAndEndDates === null && isValid) { isValid = false; errorMessage += "Die Datums- und / oder Zeitangaben sind nicht korrekt.
"; } var isInEditingMode = getIsInEditingMode(); if(isValid === false) { hideSpinner(); showAlertMessageBox("Fehler", errorMessage, function() { $("#messagePopup .modal-body").html(); }, true); return; } logDebug("startAndEndDates !== null && isValid: " + (startAndEndDates !== null && isValid)); if(startAndEndDates !== null && isValid) { var start = startAndEndDates[0]; var end = startAndEndDates[1]; logDebug("Validiere Eingaben auf dem Server"); $.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) { logDebug("Eingaben auf dem Server validiert"); var message = $.parseJSON(result); if (message.Message === null) { logDebug("Message-Eigenschaft der Serverantwort ist null. Schicke Formular zum Server"); form.submit(); } else { logDebug("Message-Eigenschaft der Serverantwort hat einen Wert. Beende Warteanimation"); hideSpinner(); var kannTrotzdemGespeichertWerden = message.KannTrotzdemGespeichertWerden; var testCallback = function () { logDebug("Kann trotzdem gespeichert werden: " + kannTrotzdemGespeichertWerden); $("#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) { logError(error.message); } } function hideGoalRatingPopup() { try { $("#goal-rating-popup").modal("hide"); } catch (error) { logError(error.message); } } 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) { logError(error.message); } } 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) { logError(error.message); } } function resetSupportConceptSearch() { try { $("#support-concept-search-input").val(""); $(".blubb-test").show(); } catch (error) { logError(error.message); } } 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) { logError(error.message); } } function setServiceDescription(id) { try { var url = getSetServiceDescriptionUrl(); var selectedServiceDescription = $("#" + id).find(":selected").val(); $.get(url, { pServiceDescriptionOid: selectedServiceDescription}); } catch (error) { logError(error.message); } }