2020-04-02 13:19:14 +02:00
function resetInsertAppointmentForm ( ) {
2020-07-15 12:15:13 +02:00
$ . get ( getResetSelectedAppointmentUrl ( ) )
. always ( function ( ) {
2020-07-16 18:50:34 +02:00
if ( $ ( window ) . width ( ) < 768 ) {
2020-07-15 12:15:13 +02:00
hideAppointmentForm ( ) ;
}
} ) ;
2020-04-02 13:19:14 +02:00
2020-05-12 14:20:58 +02:00
$ ( "#scheduler-start-time, #scheduler-end-time, #subject, #location, #notice" ) . val ( "" ) ;
$ ( "#scheduler-start-date, #scheduler-end-date" ) . val ( moment ( ) . format ( "DD.MM.YYYY" ) ) ;
2020-06-29 19:24:24 +02:00
2022-02-10 11:06:03 +01:00
$ ( "#resources-popup input:checked, #customers-popup input:checked, #employees-popup input:checked" ) . each ( function ( ) {
2020-06-29 19:24:24 +02:00
$ ( this ) . prop ( "checked" , false ) ;
} ) ;
2022-02-10 11:06:03 +01:00
$ ( "#selected-resources-list, #selected-employees-list, #selected-customers-list" ) . empty ( ) ;
$ ( "#IsAllDay" ) . prop ( "checked" , false ) ;
$ ( "#IsPrivate" ) . prop ( "checked" , false ) ;
2020-04-02 13:19:14 +02:00
}
function submitInsertAppointmentForm ( ) {
showSpinner ( ) ;
validateAppointmentForm ( ) ;
}
function submitSchedulerDateForm ( ) {
showSpinner ( ) ;
$ ( "#scheduler-date-form" ) . submit ( ) ;
}
function validateAppointmentForm ( ) {
2022-02-10 11:06:03 +01:00
var isAllDay = $ ( "#IsAllDay" ) . prop ( "checked" ) === true ;
2020-04-02 13:19:14 +02:00
var startTimePicker = $ ( "#scheduler-start-time-picker" ) ;
var startDatePicker = $ ( "#scheduler-start-date-picker" ) ;
var endTimePicker = $ ( "#scheduler-end-time-picker" ) ;
var endDatePicker = $ ( "#scheduler-end-date-picker" ) ;
2022-02-10 11:06:03 +01:00
var isStartTimeInputEmpty = isAllDay ? false : isEmptyOrSpaces ( $ ( "#scheduler-start-time" ) . val ( ) ) ;
var isEndTimeInputEmpty = isAllDay ? false : isEmptyOrSpaces ( $ ( "#scheduler-end-time" ) . val ( ) ) ;
2020-05-12 14:20:58 +02:00
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" ) ;
2020-04-02 13:19:14 +02:00
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 ( ) ;
2022-02-10 11:06:03 +01:00
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 ) {
2020-04-02 13:19:14 +02:00
hideSpinner ( ) ;
2022-02-10 11:06:03 +01:00
2023-04-04 19:30:03 +02:00
logInfo3 ( "Datumsproblem!" ) ;
2022-02-10 11:06:03 +01:00
showMessagePopupWithHtml ( "Fehler" , '<div class="alert alert-danger" role="alert">Die Zeit- und/oder Datumsangaben sind nicht korrekt.</div>' ) ;
2020-05-12 14:20:58 +02:00
$ ( "#scheduler-start-time, #scheduler-end-time" ) . val ( "" ) ;
2020-04-02 13:19:14 +02:00
return ;
}
if ( endDate . isValid ( ) === false ) {
endDate = startDate . clone ( ) ;
}
2022-02-10 11:06:03 +01:00
var startHours = 0 ;
var startMinutes = 0 ;
var endHours = 0 ;
var endMinutes = 0 ;
2020-04-02 13:19:14 +02:00
2022-02-10 11:06:03 +01:00
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 ) ;
2020-04-24 19:08:09 +02:00
2020-04-02 13:19:14 +02:00
if ( endDate . isBefore ( startDate ) ) {
hideSpinner ( ) ;
2023-04-04 19:30:03 +02:00
//$("#messagePopup .modal-body").html('<div class="alert alert-danger" role="alert">Das Startdatum muss vor dem Enddatum liegen.</div>');
showMessagePopupWithHtml ( "Fehler" , '<div class="alert alert-danger" role="alert">Das Startdatum muss vor dem Enddatum liegen.</div>' ) ;
2020-04-02 13:19:14 +02:00
return ;
}
2020-06-29 19:24:24 +02:00
var selectedOids = [ ] ;
var oidString = "" ;
$ ( "#resources-popup input:checked" ) . each ( function ( ) {
var id = $ ( this ) . attr ( "id" ) ;
selectedOids . push ( id . split ( "-" ) [ 0 ] ) ;
} ) ;
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 } ) . done ( function ( result ) {
if ( result === undefined || result === null || result . length === 0 ) {
return ;
}
if ( result . length > 1 ) {
try {
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." ;
}
2021-01-14 16:30:28 +01:00
2020-06-29 19:24:24 +02:00
hideSpinner ( ) ;
2021-01-14 16:30:28 +01:00
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 ) ;
2020-06-29 19:24:24 +02:00
return ;
}
} catch ( error ) {
2023-03-08 20:17:19 +01:00
showErrorPopup ( error ) ;
2020-06-29 19:24:24 +02:00
return ;
}
}
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 ) {
2020-05-12 14:20:58 +02:00
$ . get (
getCheckForOverlappingAppointmentsUrl ( ) ,
{
2020-06-29 19:24:24 +02:00
startDateRaw : formattedStartDate ,
endDateRaw : formattedEndDate ,
startTimeRaw : formattedStartTime ,
endTimeRaw : formattedEndTime
2020-05-12 14:20:58 +02:00
}
) . 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>' ) ;
2021-07-16 18:00:38 +02:00
showMessagePopupWithCallback (
"Überschneidung" ,
2020-05-12 14:20:58 +02:00
null ,
function ( ) {
$ ( "#messagePopup .modal-body" ) . html ( ) ;
showSpinner ( ) ;
$ ( "#insert-appointment-form" ) . submit ( ) ;
2021-07-16 18:00:38 +02:00
} ,
false ) ;
2020-05-12 14:20:58 +02:00
} else {
$ ( "#insert-appointment-form" ) . submit ( ) ;
}
} ) ;
}
function hideAppointmentForm ( ) {
2020-07-16 18:50:34 +02:00
$ ( "#form-container" ) . addClass ( "d-none d-sm-none" ) ;
2020-05-12 14:20:58 +02:00
}
function showAppointmentForm ( ) {
2020-07-16 18:50:34 +02:00
$ ( "#form-container" ) . removeClass ( "d-none d-sm-none" ) ;
2023-02-09 15:17:33 +01:00
calcPrependTextSizes ( ) ;
2020-05-12 14:20:58 +02:00
}
function toggleAppointmentForm ( ) {
var isVisible = $ ( "#form-container" ) . css ( "display" ) === "block" ;
if ( isVisible ) {
hideAppointmentForm ( ) ;
} else {
showAppointmentForm ( ) ;
}
2020-06-29 19:24:24 +02:00
}
2022-02-10 11:06:03 +01:00
function listSearchOnChange ( searchInputId , entryClass , textClass ) {
try {
var text = $ ( "#" + searchInputId ) . val ( ) . toLowerCase ( ) ;
2020-06-29 19:24:24 +02:00
2022-02-10 11:06:03 +01:00
var entries = $ ( "." + entryClass ) ;
2020-06-29 19:24:24 +02:00
2022-02-10 11:06:03 +01:00
if ( text . length === 0 ) {
entries . show ( ) ;
}
2020-06-29 19:24:24 +02:00
2022-02-10 11:06:03 +01:00
$ . each ( entries , function ( index , item ) {
var customer = $ ( item ) ;
2020-06-29 19:24:24 +02:00
2022-02-10 11:06:03 +01:00
if ( customer . find ( "." + textClass ) . text ( ) . toLowerCase ( ) . includes ( text ) ) {
customer . show ( ) ;
} else {
customer . hide ( ) ;
}
} ) ;
} catch ( error ) {
2023-03-08 20:17:19 +01:00
showErrorPopup ( error ) ;
2020-06-29 19:24:24 +02:00
}
}
2022-02-10 11:06:03 +01:00
function resetSearch ( searchInputId , entryClass ) {
try {
$ ( "#" + searchInputId ) . val ( "" ) ;
$ ( "." + entryClass ) . show ( ) ;
} catch ( error ) {
2023-03-08 20:17:19 +01:00
showErrorPopup ( error ) ;
2020-06-29 19:24:24 +02:00
}
2020-04-02 13:19:14 +02:00
}