function LoadUsersList(user_id) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { document.querySelector("#users_list_content").innerHTML = this.responseText; PermissionsListUser(user_id); $(document).ready(function() { new DataTable('#users_permission_table', { paging: false, scrollCollapse: true, scrollY: '500px', language: { emptyTable: "Nessun dato presente nella tabella", search: "Cerca:", infoEmpty: "Visualizzati da 0 a 0 di 0 risultati", info: "Visualizzati da _START_ a _END_ di _TOTAL_ risultati", buttons: { print: "Stampa", colvis: "Visualizza", colvisRestore: "Ripristina visualizzazione" } } }); }); } }; xmlhttp.open("GET", "public/permissions/users_list.php"); xmlhttp.send(); } function PermissionsListUser(user_id) { ShowPageLoader(); for(i=0;i<50;i++) { if(document.getElementById(i) != null) { document.getElementById(i).style.backgroundColor = "transparent"; } } document.getElementById(user_id).style.backgroundColor = "#80cbc4"; document.getElementById("permissions_list_loader").style.display = "block"; var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { document.querySelector("#permissions_list_content").innerHTML = this.responseText; HidePageLoader(); $(document).ready( function () { new DataTable('#permissions_list_table', { paging: false, scrollCollapse: true, scrollY: '500px', layout: { topStart: { buttons: [ { extend: 'print', split: ['print','excel','pdf', 'csv'] }, { text: 'Calendario', action: function (e, dt, node, config) { UserCalendar(user_id); } }, { text: 'Nuovo permesso', action: function (e, dt, node, config) { NewPermission(user_id); } } ] } }, language: { emptyTable: "Nessun dato presente nella tabella", search: "Cerca:", infoEmpty: "Visualizzati da 0 a 0 di 0 risultati", info: "Visualizzati da _START_ a _END_ di _TOTAL_ risultati", buttons: { print: "Stampa", colvis: "Visualizza", colvisRestore: "Ripristina visualizzazione" } }, order: { idx: 1, dir: 'desc' } }); } ); document.getElementById("permissions_list_loader").style.display = "none"; } }; xmlhttp.open("GET", "public/permissions/permissions_list.php?user_id="+user_id); xmlhttp.send(); } function loadTotalPermissionsToApprove() { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { document.querySelector("#permissions_to_approve_count").innerHTML = this.responseText; } }; xmlhttp.open("GET", "public/permissions/permissions_to_approve_count.php"); xmlhttp.send(); } function permissionsToApprove() { document.getElementById("open_permissions_to_approve").click(); loadPermissionToApprove(); } function loadPermissionToApprove() { ShowPageLoader(); setTimeout(() => { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { document.querySelector("#permissions_to_approve_content").innerHTML = this.responseText; HidePageLoader(); $(document).ready( function () { new DataTable('#permissions_to_approve_table', { paging: false, scrollCollapse: true, scrollY: '400px', layout: { topStart: { buttons: [ { extend: 'colvis', postfixButtons: ['colvisRestore'], popoverTitle: 'Visibilità colonne' }, { extend: 'print', split: ['print','excel','pdf', 'csv'] } ] } }, language: { emptyTable: "Nessun dato presente nella tabella", search: "Cerca:", infoEmpty: "Visualizzati da 0 a 0 di 0 risultati", info: "Visualizzati da _START_ a _END_ di _TOTAL_ risultati", buttons: { print: "Stampa", colvis: "Visualizza", colvisRestore: "Ripristina visualizzazione" } }, order: { idx: 3, dir: 'desc' } }); } ); } }; xmlhttp.open("GET", "public/permissions/permissions_to_approve_list.php"); xmlhttp.send(); }, 1000); } function NewPermission(user_id) { document.getElementById("open_new_permission").click(); ShowPageLoader(); var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { document.querySelector("#new_permission_content").innerHTML = this.responseText; HidePageLoader(); } }; xmlhttp.open("GET", "public/permissions/new_permission_content.php?user_id="+user_id); xmlhttp.send(); } function changeFullDay() { var full_day = document.getElementById("new_permission_full_day").checked; if(full_day == true) { document.getElementById("new_permission_from_time_container").style.display = 'none'; document.getElementById("new_permission_to_time_container").style.display = 'none'; } else { document.getElementById("new_permission_from_time_container").style.display = 'flex'; document.getElementById("new_permission_to_time_container").style.display = 'flex'; } } function CreateNewPermission(user_id) { var permission_justification = document.getElementById("new_permission_justification").value; var permission_full_day = document.getElementById("new_permission_full_day").checked; var permission_start_date = document.getElementById("new_permission_start_date").value; var permission_end_date = document.getElementById("new_permission_end_date").value; var permission_start_time = document.getElementById("new_permission_start_time").value; var permission_end_time = document.getElementById("new_permission_end_time").value; var permission_note = document.getElementById("new_permission_note").value; if(permission_justification == "") { ErrorAlert("Giustificativo è obbligatorio"); exit; } ShowPageLoader(); $.ajax({ type: "POST", url: "php/permissions/new_permission.php", data: { user_id: user_id, permission_justification: permission_justification, permission_full_day: permission_full_day, permission_start_date: permission_start_date, permission_end_date: permission_end_date, permission_start_time: permission_start_time, permission_end_time: permission_end_time, permission_note: permission_note }, success: function (res) { if (res === 'attendancePresent') { ErrorAlert("Il cartellino del mese è già stato chiuso."); } else if (res === 'error') { ErrorAlert("Errore: "+res) } else { SuccessAlert('Permesso inserito'); document.getElementById("close_new_permission").click(); PermissionsListUser(user_id); const date = new Date(); loadUserCalendar(user_id, 'dayGridMonth', date); } HidePageLoader(); } }); } function approvePermission(user_id, permission_id) { Swal.fire({ title: "Confermi approvazione?", text: "", icon: "warning", showCancelButton: true, confirmButtonColor: "#d33", cancelButtonColor: "gray", confirmButtonText: "Procedi", cancelButtonText: "Annulla" }).then((result) => { if (result.isConfirmed) { ShowPageLoader(); $.ajax({ type: "POST", url: "php/permissions/manage_permission.php", data: { id: permission_id, result: 'approvato' }, success: function (res) { if (res === 'attendancePresent') { ErrorAlert("Il cartellino del mese è già stato chiuso."); } else if (res === 'error') { ErrorAlert("Errore: "+res); } else { LoadUsersList(user_id); PermissionsListUser(user_id); SuccessAlert('Permesso approvato'); loadTotalPermissionsToApprove(); loadPermissionToApprove(); document.getElementById("close_permission_details").click(); const date = new Date(); loadUserCalendar(user_id, 'dayGridMonth', date); } HidePageLoader(); } }); } }); } function rejectPermission(user_id, permission_id) { Swal.fire({ title: "Confermi rifiuto?", text: "", icon: "question", showCancelButton: true, confirmButtonColor: "#d33", cancelButtonColor: "gray", confirmButtonText: "Procedi", cancelButtonText: "Annulla" }).then((result) => { if (result.isConfirmed) { ShowPageLoader(); $.ajax({ type: "POST", url: "php/permissions/manage_permission.php", data: { id: permission_id, result: 'rifiutato' }, success: function (res) { if (res === 'attendancePresent') { ErrorAlert("Il cartellino del mese è già stato chiuso."); } else if (res === 'error') { ErrorAlert("Errore: "+res); } else { LoadUsersList(user_id); PermissionsListUser(user_id); SuccessAlert('Permesso rifiutato'); loadTotalPermissionsToApprove(); loadPermissionToApprove(); document.getElementById("close_permission_details").click(); const date = new Date(); loadUserCalendar(user_id, 'dayGridMonth', date); } HidePageLoader(); } }); } }); } function deletePermission(user_id, permission_id) { Swal.fire({ title: "Confermi eliminazione?", text: "Il permesso verrà eliminato dal sistema", icon: "question", showCancelButton: true, confirmButtonColor: "#d33", cancelButtonColor: "#3085d6", confirmButtonText: "Sì, elimina!", cancelButtonText: "Annulla" }).then((result) => { if (result.isConfirmed) { ShowPageLoader(); $.ajax({ type: "POST", url: "php/permissions/delete_permission.php", data: { permission_id: permission_id }, success: function (res) { if (res === 'attendancePresent') { ErrorAlert("Il cartellino del mese è già stato chiuso"); } else if (res === 'error') { ErrorAlert("Errore: "+res) } else if (res === 'deleted') { SuccessAlert('Permesso eliminato'); PermissionsListUser(user_id); const date = new Date(); loadUserCalendar(user_id, 'dayGridMonth', date); document.getElementById("close_permission_details").click(); loadPermissionToApprove(); } else if (res === 'requested') { SuccessAlert('Richiesta eliminazione inviata'); PermissionsListUser(user_id); const date = new Date(); loadUserCalendar(user_id, 'dayGridMonth', date); document.getElementById("close_permission_details").click(); loadPermissionToApprove(); } hidePageLoader(); } }); } }); } function editPermission(user_id, permission_id) { ShowPageLoader(); document.getElementById("open_permission_details").click(); var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { document.querySelector("#permission_details_content").innerHTML = this.responseText; HidePageLoader(); } }; xmlhttp.open("GET", "public/permissions/permission_details_content.php?permission_id="+permission_id+"&user_id="+user_id); xmlhttp.send(); } function changeFullDayEdit() { var full_day = document.getElementById("permission_full_day").checked; if(full_day == true) { document.getElementById("permission_from_time_container").style.display = 'none'; document.getElementById("permission_to_time_container").style.display = 'none'; } else { document.getElementById("permission_from_time_container").style.display = 'flex'; document.getElementById("permission_to_time_container").style.display = 'flex'; } } function updatePermission(user_id, permission_id) { ShowPageLoader(); var permission_justification = document.getElementById("permission_justification").value; var permission_full_day = document.getElementById("permission_full_day").checked; var permission_start_date = document.getElementById("permission_start_date").value; var permission_end_date = document.getElementById("permission_end_date").value; var permission_start_time = document.getElementById("permission_start_time").value; var permission_end_time = document.getElementById("permission_end_time").value; var permission_note = document.getElementById("permission_note").value; var permission_status = document.getElementById("permission_status").value; $.ajax({ type: "POST", url: "php/permissions/update_permission.php", data: { permission_id: permission_id, permission_justification: permission_justification, permission_full_day: permission_full_day, permission_start_date: permission_start_date, permission_end_date: permission_end_date, permission_start_time: permission_start_time, permission_end_time: permission_end_time, permission_note: permission_note, permission_status: permission_status }, success: function (res) { if (res === 'attendancePresent') { ErrorAlert("Il cartellino del mese è già stato chiuso"); } else if (res === 'error') { ErrorAlert("Errore: "+res); } else if (res === 'deleted') { SuccessAlert('Permesso eliminato'); PermissionsListUser(user_id); const date = new Date(); loadUserCalendar(user_id, 'dayGridMonth', date); document.getElementById("close_permission_details").click(); loadPermissionToApprove(); } else if (res === 'requested') { SuccessAlert('Richiesta eliminazione inviata'); PermissionsListUser(user_id); const date = new Date(); loadUserCalendar(user_id, 'dayGridMonth', date); document.getElementById("close_permission_details").click(); loadPermissionToApprove(); } HidePageLoader(); } }); } function UserCalendar(user_id) { document.getElementById("open_user_calendar").click(); ShowPageLoader(); setTimeout(() => { const date = new Date(); loadUserCalendar(user_id, 'dayGridMonth', date); HidePageLoader(); }, 1000); } function UserCalendarDate(user_id, date) { document.getElementById("open_user_calendar").click(); ShowPageLoader(); setTimeout(() => { loadUserCalendar(user_id, 'timeGridDay', date); HidePageLoader(); }, 1000); } function loadUserCalendar(user_id, view, date) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { document.querySelector("#user_calendar_content").innerHTML = this.responseText; var calendarEl = document.getElementById('calendar'); var calendar = new FullCalendar.Calendar(calendarEl, { initialView: view, locale: 'it', editable: false, height: 700, now: date, displayEventTime: true, firstDay: 1, customButtons: { myCustomButton: { text: 'Nuovo permesso', click: function() { NewPermission(user_id); } } }, headerToolbar: { left: 'prev,next today myCustomButton', center: 'title', right: 'dayGridMonth,timeGridWeek,timeGridDay,listMonth' }, buttonText: { prev: 'Prec', next: 'Succ', today: 'Oggi', year: 'Anno', month: 'Mese', week: 'Settimana', day: 'Giorno', list: 'Agenda', }, allDayText: 'Tutto il giorno', moreLinkText(n) { return '+altri ' + n; }, events: "php/permissions/get_calendar_permissions.php?user_id="+user_id, eventDisplay: 'block', displayEventTime: true, eventTimeFormat: { hour: '2-digit', minute: '2-digit', hour12: false }, selectable: true, select: function (info) { document.getElementById("open_new_permission").click(); var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { document.querySelector("#new_permission_content").innerHTML = this.responseText; } }; xmlhttp.open("GET", "public/permissions/new_permission_content.php?user_id="+user_id+"&startDate="+info.startStr+"&endDate="+info.endStr); xmlhttp.send(); }, eventClick: function (info) { if(info.event.id < 9000000) { document.getElementById("open_permission_details").click(); var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { document.querySelector("#permission_details_content").innerHTML = this.responseText; } }; xmlhttp.open("GET", "public/permissions/permission_details_content.php?permission_id="+info.event.id+"&user_id="+user_id); xmlhttp.send(); } } }); calendar.render(); } }; xmlhttp.open("GET", "public/permissions/permissions_calendar_content.php?user_id="+user_id); xmlhttp.send(); }