function selectSupportConcept(cb2ScOid) { showSpinner(); $("#CostBearer2SupportConceptOid").val(cb2ScOid); $("#selectSupportConceptForm").submit(); } function setSelectedEmployee() { const employeeOid = parseInt($("#employeesDropDown").find(":selected").val()); if (isNaN(employeeOid)) { return; } $.get(window.getSetServiceRecordEmployeeUrl(), { employeeOid: employeeOid }); } function checkJson(str) { try { JSON.parse(str); } catch (error) { return false; } return true; } function showAlertMessage(message) { $("#form-alert").html(message); $("#form-alert").show(); } function resetCreateForm() { $("#serviceRecordCreationForm").trigger("reset"); const 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 submitGroupBookingEditForm() { showSpinner(); validateForm($("#groupBookingEditingForm"), null); } function submitGroupBookingForm() { showSpinner(); validateForm($("#groupBookingForm"), null); } function deactivateGroupBookingForm() { $("#betrag, #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, #marker-cb").prop("disabled", true); } function activateGroupBookingForm() { $("#betrag, #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, #marker-cb").prop("disabled", false); } function deleteServiceRecord(serviceRecordOid) { showMessagePopupWithCallback("Eintrag löschen", "Sind Sie sicher, dass Sie den Eintrag löschen möchten?", function() { const url = window.getValidateServiceRecordDeletionUrl(); $.get(url, { serviceRecordOidString: serviceRecordOid }).done(function(result) { if(result === "Error") { hideSpinner(); showAlertMessageBox("Fehler", "Es ist ein Fehler aufgetreten", null, false); return; } if(false === checkJson(result)) { logWarning("deleteServiceRecord: Der zurückgegebene Wert ist kein gültiges JSON!"); hideSpinner(); return; } var form = $("#deletion-form"); if(result.length === 0) { if(form.length !== 0) { $("#oidHolder").val(serviceRecordOid); showSpinner(); form.submit(); } } else { // Meldungen hideSpinner(); const validationResult = parseJason(result); if(validationResult.Message === null) { $("#oidHolder").val(serviceRecordOid); showSpinner(); form.submit(); return; } $("#oidHolder").val(serviceRecordOid); var kannTrotzdemGespeichertWerden = validationResult.KannTrotzdemGespeichertWerden; const 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 = window.getIsDocumentationMandatory(); var numberOfNoticeTextareas = window.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.
"; } if(isValid === false) { hideSpinner(); showAlertMessageBox("Fehler", errorMessage, function() { $("#messagePopup .modal-body").html(); }, true); return; } if(startAndEndDates !== null && isValid) { var [start, end] = startAndEndDates; if(end.isBefore(start)) { showAlertMessageBox("Fehler", "Das Ende muss vor dem Start liegen!", null, false); } var [doku1, doku2, doku3, doku4, doku5] = getDokuTexte(); var startTimeInput = $(`#${prefix}start-time`); var endTimeInput = $(`#${prefix}end-time`); $("#srv-date").val(start.format("DD.MM.YYYY")); $("#srv-end-date").val(end.format("DD.MM.YYYY")); $("#srv-start").val(startTimeInput.val()); $("#srv-end").val(endTimeInput.val()); $("#srv-doku1").val(doku1); $("#srv-doku2").val(doku2); $("#srv-doku3").val(doku3); $("#srv-doku4").val(doku4); $("#srv-doku5").val(doku5); $("#srv-distance").val($(`#${prefix}distance`).val()); $("#srv-form-id").val(form.attr("id")); $("#srv-marker").val($(`#${prefix}marker-cb`).is(":checked") ? "on" : "off"); $("#srv-service-description").val($(`#${prefix}leistung-select`).find(":selected").val()); $("#srv-duration").val($(`#${prefix}duration`).val()); $("#srv-betrag").val($("#betrag").val()); showSpinner(); $("#service-record-validation-form").submit(); } } function getDokuTexte() { try { const noticeList = [null, null, null, null, null]; const isMultiBooking = $("#mb-dokufeld").length > 0 || $("#mb-doku-textarea-0").length > 0; const multiBookingPrefix = isMultiBooking ? "mb-" : ""; const hasMultipleDokufelder = $(`#${multiBookingPrefix}dokufeld`).length === 0; let dokufeldCounter = 0; if(hasMultipleDokufelder) { for(let i = 0; i < 5; i++) { const dokufeld = $(`#${multiBookingPrefix}doku-textarea-${i}`); if(dokufeld.length > 0) { noticeList[i] = dokufeld.val(); dokufeldCounter++; } } } else { noticeList[0] = $(`#${multiBookingPrefix}dokufeld`).val(); dokufeldCounter = 1; } let x = ""; for(let ii = 0; ii < dokufeldCounter; ii++) { x += noticeList[ii]; if(ii < noticeList.length - 1) { x += ", "; } } return noticeList; } catch (error) { window.showErrorPopup(error); } } function showGoalRatingPopup(goalOid) { try { $("#goal-rating-popup").modal("show"); $("#goal-to-rate-oid").val(goalOid); } catch (error) { window.showErrorPopup(error); } } function hideGoalRatingPopup() { try { $("#goal-rating-popup").modal("hide"); } catch (error) { window.showErrorPopup(error); } } function checkChildNodes(parentOid) { const rootElement = $(`#c-${parentOid}`); const checkboxes = rootElement.find("input"); var isChecked = $(`#${parentOid}`).prop("checked") === true; $.each(checkboxes, function(index, checkbox) { const box = $(checkbox); const id = box.attr("id"); if(!id !== parentOid) { box.prop("checked", isChecked); } }); } function validateDistanceInput() { checkNumberInput("distance"); } function checkNumberInput(inputId) { const input = $(`#${inputId}`).val(); return /^\d+$/.test(input); } // 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`); startDatePicker.datetimepicker("show"); startDatePicker.datetimepicker("hide"); endDatePicker.datetimepicker("show"); endDatePicker.datetimepicker("hide"); 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(); // Bei leeren Startzeit- und Endzeitfeldern. Muss ein Dummydate zurückgeben, // damit das Speichern ohne Angabe der Start- und Endzeit möglich ist. if(a && $(`#${prefix}start-time`).val().length === 0 || $(`#${prefix}end-time`).val().length === 0) { var dummyStart = startDate; var dummyEnd = endDatePicker.length === 0 ? startDate.clone() : endDate; dummyStart.hours(0); dummyStart.minutes(0); dummyStart.seconds(1); dummyEnd.hours(0); dummyEnd.minutes(0); dummyEnd.seconds(1); if (dummyEnd.isBefore(dummyStart)) { return null; } return [dummyStart, dummyEnd]; } startTimePicker.datetimepicker("show"); startTimePicker.datetimepicker("hide"); endTimePicker.datetimepicker("show"); endTimePicker.datetimepicker("hide"); var startTime = startTimePicker.datetimepicker("date"); var endTime = endTimePicker.datetimepicker("date"); 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)) { // Wenn das Enddatum nicht sichtbar ist und der Termin länger als den Starttag geht, muss das Enddatum neu berechnet werden // Bei Vorhandensein der Minuten/Stunden-Auswahl ist kein (h) im Dauertext! var dropDownbutton = $(`#${prefix}hours-minutes-dropdown-btn`); var hasMinHourDropdown = dropDownbutton.length > 0; var duration = $(`#${prefix}duration`).val(); var isHour = $(`#${prefix}duration`).prev().text().trim() === "Dauer (h)" || (hasMinHourDropdown && $(`#${prefix}hours-minutes-dropdown-btn`).text() === "Stunden"); var minutesToAdd = isHour ? 60 * duration : duration; endDate = startDate.clone().add(minutesToAdd, "minutes"); return endDate.isBefore(startDate) ? null : [startDate, endDate]; } return [startDate, endDate]; } function supportConceptSearchOnChange() { try { var text = $("#support-concept-search-input").val().toLowerCase(); const links = $(".blubb-test"); if (text.length === 0) { links.show(); } $.each(links, function(index, item) { const supportConcept = $(item); if(supportConcept.find(".supportconcept-name-header").text().toLowerCase().includes(text)) { supportConcept.show(); } else { supportConcept.hide(); } }); } catch (error) { window.showErrorPopup(error); } } function resetSupportConceptSearch() { try { $("#support-concept-search-input").val(""); $(".blubb-test").show(); } catch (error) { window.showErrorPopup(error); } } function getSignatureImage(serviceRecordOid, signatureOid) { try { const url = window.getGetSignatureImageUrl(); $.get(url, { serviceRecordOid: serviceRecordOid, signatureOid: signatureOid }).done(function(textAndImage) { const text2Image = textAndImage.split(";"); const serviceRecordDescription = text2Image[0]; const imageData = text2Image[1] + ";" + text2Image[2]; $("#signature-text").html(serviceRecordDescription); $("#signature-img").attr("src", imageData); $("#signature-img-popup").modal("show"); }); } catch (error) { window.showErrorPopup(error); } } function setServiceDescription(id) { try { const url = window.getSetServiceDescriptionUrl(); const selectedServiceDescription = $(`#${id}`).find(":selected").val(); $.get(url, {pServiceDescriptionOid: selectedServiceDescription}); } catch(error) { window.showErrorPopup(error); } }