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
$ ( "#resources-popup input:checked" ) . each ( function ( ) {
$ ( this ) . prop ( "checked" , false ) ;
} ) ;
$ ( "#selected-resources-list" ) . empty ( ) ;
2020-04-02 13:19:14 +02:00
}
function submitInsertAppointmentForm ( ) {
showSpinner ( ) ;
validateAppointmentForm ( ) ;
}
function submitSchedulerDateForm ( ) {
showSpinner ( ) ;
$ ( "#scheduler-date-form" ) . submit ( ) ;
}
function validateAppointmentForm ( ) {
var startTimePicker = $ ( "#scheduler-start-time-picker" ) ;
var startDatePicker = $ ( "#scheduler-start-date-picker" ) ;
var endTimePicker = $ ( "#scheduler-end-time-picker" ) ;
var endDatePicker = $ ( "#scheduler-end-date-picker" ) ;
2020-05-12 14:20:58 +02:00
var isStartTimeInputEmpty = isEmptyOrSpaces ( $ ( "#scheduler-start-time" ) . val ( ) ) ;
var isEndTimeInputEmpty = isEmptyOrSpaces ( $ ( "#scheduler-end-time" ) . val ( ) ) ;
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 ( ) ;
var c = startTime === undefined || startTime === null || ! startTime . isValid ( ) ;
var d = endTime === undefined || endTime === null || ! endTime . isValid ( ) ;
2020-05-12 14:20:58 +02:00
if ( a || b || c || d || isStartDateInputEmpty || isStartTimeInputEmpty || isEndTimeInputEmpty || isEndDateInputEmpty ) {
2020-04-02 13:19:14 +02:00
hideSpinner ( ) ;
$ ( "#messagePopup .modal-body" ) . html ( '<div class="alert alert-danger" role="alert">Die Zeit- und/oder Datumsangaben sind nicht korrekt.</div>' ) ;
showMessagePopup ( "Fehler" ) ;
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 ( ) ;
}
startDate = startDate . hours ( startTime . hours ( ) ) ;
startDate = startDate . minutes ( startTime . minutes ( ) ) ;
endDate = endDate . hours ( endTime . hours ( ) ) ;
endDate = endDate . minutes ( endTime . minutes ( ) ) ;
2020-04-24 19:08:09 +02:00
2020-04-02 13:19:14 +02:00
if ( endDate . isBefore ( startDate ) ) {
hideSpinner ( ) ;
$ ( "#messagePopup .modal-body" ) . html ( '<div class="alert alert-danger" role="alert">Das Startdatum muss vor dem Enddatum liegen.</div>' ) ;
showMessagePopup ( "Fehler" ) ;
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." ;
}
hideSpinner ( ) ;
$ ( "#messagePopup .modal-body" ) . html ( '<div class="alert alert-warning" role="alert">' + unavailableResourcesMessage + "<br/><br/>Möchten Sie trotzdem speichern?</div>" ) ;
showMessagePopup ( "Fehler" ) ;
showMessagePopupWithCallback ( "Überschneidung" ,
null ,
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" ) ) ;
} ) ;
return ;
}
} catch ( error ) {
console . log ( "%c" + error . message , "color:red;" ) ;
hideSpinner ( ) ;
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>' ) ;
showMessagePopupWithCallback ( "Überschneidung" ,
null ,
function ( ) {
$ ( "#messagePopup .modal-body" ) . html ( ) ;
showSpinner ( ) ;
$ ( "#insert-appointment-form" ) . submit ( ) ;
} ) ;
} 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" ) ;
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
}
function changeResourceSelection ( ) {
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 ] + "," ;
}
2020-07-15 12:15:13 +02:00
$ . get ( getSelectResourcesForAppointmentUrl ( ) , { resourceOids : oidString } ) . done ( updateSelectedResourceList ) ;
2020-06-29 19:24:24 +02:00
}
2020-07-15 12:15:13 +02:00
function updateSelectedResourceList ( jsonResult ) {
2020-06-29 19:24:24 +02:00
var list = $ ( "#selected-resources-list" ) ;
list . empty ( ) ;
if ( isEmptyOrSpaces ( jsonResult ) ) {
return ;
}
var resourceList = $ . parseJSON ( jsonResult ) ;
$ . each ( resourceList , function ( index , customListItem ) {
var html =
"<div class='list-group-item' id='relation-item-" + customListItem . ResourceOid + "'>" +
"<div class='row'>" +
"<div class='col my-auto'>" +
"<i class='fas fa-cubes text-bewo-resource mr-2'></i>" + customListItem . Name +
"</div>" +
"<div class='col-auto my-auto'>" +
"<button type='button' class='btn btn-primary' onclick='removeSelectedResource(" + customListItem . ResourceOid + ")'>" +
"<span class='fas fa-times-circle'></span>" +
"</button>" +
"</div>" +
"</div>" +
"</div>" ;
list . append ( html ) ;
} ) ;
}
function removeSelectedResource ( resourceOid ) {
$ ( "#relation-item-" + resourceOid ) . remove ( ) ;
var checkbox = $ ( "#" + resourceOid + "-checkbox" ) ;
if ( checkbox . length ) {
checkbox . prop ( "checked" , false ) ;
}
changeResourceSelection ( ) ;
2020-04-02 13:19:14 +02:00
}