ACIL FM
Dark
Refresh
Current DIR:
/home/mhhtmff/app/NH-HR-test-old/ds/test
/
home
mhhtmff
app
NH-HR-test-old
ds
test
Upload
Zip Selected
Delete Selected
Pilih semua
Nama
Ukuran
Permission
Aksi
cal.php
2.04 MB
chmod
View
DL
Edit
Rename
Delete
problems.php
17.37 MB
chmod
View
DL
Edit
Rename
Delete
test.php
24.92 MB
chmod
View
DL
Edit
Rename
Delete
test1.php
17.49 MB
chmod
View
DL
Edit
Rename
Delete
Edit file: /home/mhhtmff/app/NH-HR-test-old/ds/test/problems.php
<?php session_start(); if (!isset($_SESSION['loggedin'])) { exit("unauthorized"); } include "../php/database.php"; include "../php/functions.php"; $sql_delete = "DELETE FROM problems WHERE id = 0"; $con->query($sql_delete); $sql = "SELECT * FROM check_parameters"; $result_parameters = mysqli_query($con, $sql); while ($parameters = mysqli_fetch_assoc($result_parameters)) { if ($parameters["name"] == "consecutive_work_days") { $consecutive_work_days = number_format($parameters["value"]); $consecutive_work_days_desc = $parameters["description"]; } else if ($parameters["name"] == "last_consecutive_day_max_time") { $last_consecutive_day_max_time = date("H:i:s", strtotime($parameters["value"])); $last_consecutive_day_max_time_desc = $parameters["description"]; } else if ($parameters["name"] == "max_day_work_time") { $max_day_work_time = number_format($parameters["value"]); $max_day_work_time_desc = $parameters["description"]; } else if ($parameters["name"] == "max_time_before_break") { $max_time_before_break = number_format($parameters["value"]); $max_time_before_break_desc = $parameters["description"]; } else if ($parameters["name"] == "min_break_time") { $min_break_time = number_format($parameters["value"]); $min_break_time_desc = $parameters["description"]; } else if ($parameters["name"] == "min_time_between_work_days") { $min_time_between_work_days = number_format($parameters["value"]); $min_time_between_work_days_desc = $parameters["description"]; } } $check_end_date = date("Y-m-d"); $check_start_date = date("Y-m-d", strtotime("-2 months")); echo "INIZIO: " . $check_start_date . "<br>"; echo "FINE: " . $check_end_date . "<br>"; $day_minutes = 480; $entry_time = ""; $exit_time = ""; $startDate = new \DateTime($check_start_date); $endDate = new \DateTime($check_end_date); $interval = \DateInterval::createFromDateString('1 day'); $period = new \DatePeriod($startDate, $interval, $endDate); //Ciclo gli utenti attivi $sql = "SELECT * FROM users WHERE role = 'Utente' AND enable = 1 AND attendance = 1 AND id = 29"; $result_users = mysqli_query($con, $sql); while ($users = mysqli_fetch_assoc($result_users)) { //Dichiaro/pulisco le variabili $consecutive_days = 0; $user_id = $users["id"]; //Ciclo i giorni del periodo foreach ($period as $dates) { //Dichiaro/pulisco le variabili $date = $dates->format('Y-m-d'); echo "<br>" . $date . "<br>"; $worked_minutes = 0; $index = 0; $entry_count = 0; $last_stamp_type = ""; //Determino il tipo di giorno $dt1 = strtotime($date); $dt2 = date("l", $dt1); $dt3 = strtolower($dt2); if ($dt3 == "saturday") { $day_type = "Festivo"; } else if ($dt3 == "sunday") { $day_type = "Festivo"; } else { $day_type = "Lavorativo"; } //Ciclo le timbrature dell'utente nel giorno $sql = "SELECT * FROM stamps WHERE date = '$date' AND user_id = " . $user_id . " ORDER BY time ASC"; $result_stamps = mysqli_query($con, $sql); if ($result_stamps->num_rows > 0) { $consecutive_days++; while ($stamp_row = mysqli_fetch_assoc($result_stamps)) { //Imposto le variabili $stamp_id = $stamp_row["id"]; $stamp_type = $stamp_row["type"]; $stamp_time = $stamp_row["time"]; $stamp_date = $stamp_row["date"]; $last_stamp_type = $stamp_type; //Modifico l'orario con la gestione a 15 minuti if ($stamp_type == "Entrata") { $entry_time = FormatEntryTimeBy15Minutes($stamp_time); $entry_count++; } else { $exit_time = FormatExitTimeBy15Minutes($stamp_time); } if (($index == 0) && ($stamp_type == "Uscita")) { //Se la prima timbratura del giorno è un'uscita $minutes = CalcMinutesBetweenTimes("00:00:00", $exit_time); $worked_minutes += $minutes; //Controllo il tempo massimo ti un turno lavorativo $yesterday = date('Y-m-d', strtotime($stamp_date . ' - 1 days')); $minutes = CalcMinutesBetweenTimes($yesterday . " " . $entry_time, $stamp_date . " " . $exit_time); if ($minutes > $max_time_before_break) { echo "Durata turno di lavoro: " . timeFromMinutes($minutes) . " - Massimo: " . timeFromMinutes($max_time_before_break) . "<br>"; $description = "Lavoro nel turno: " . timeFromMinutes($minutes) . " ore"; $suggestion = "" . $max_time_before_break_desc . ": " . timeFromMinutes($max_time_before_break) . ""; InsertProblem($user_id, "Timbratura", $stamp_id, $description, $suggestion, $date, 'day'); } } else if ($stamp_type == "Entrata") { //Se la timbratura è entrata //Se è la prima entrata della giornata if ($entry_count == 1) { //Controllo il tempo minimo tra un turno e un altro $yesterday = date('Y-m-d', strtotime($stamp_date . ' - 1 days')); $minutes = CalcMinutesBetweenTimes($stamp_date . " " . $stamp_time, $yesterday . " " . $exit_time); if ($minutes < $min_time_between_work_days) { echo "Tempo di riposo: " . timeFromMinutes($minutes) . " - Tempo minimo: " . timeFromMinutes($min_time_between_work_days) . "<br>"; $description = "Il tempo di riposo dal turno precedente è " . timeFromMinutes($minutes) . " ore"; $suggestion = "" . $min_time_between_work_days_desc . ": " . timeFromMinutes($min_time_between_work_days) . " ore"; InsertProblem($user_id, "Timbratura", $stamp_id, $description, $suggestion, $date, 'day'); } } else { //Controllo il tempo minimo di pausa $minutes = CalcMinutesBetweenTimes($stamp_time, $exit_time); if ($minutes < $min_break_time) { echo "Tempo di pausa: " . timeFromMinutes($minutes) . " - Tempo minimo: " . timeFromMinutes($min_break_time) . "<br>"; $description = "Pausa tra i turni: " . timeFromMinutes($minutes) . " ore"; $suggestion = "" . $min_break_time_desc . ": " . timeFromMinutes($min_break_time) . " ore"; InsertProblem($user_id, "Timbratura", $stamp_id, $description, $suggestion, $date, 'day'); } } } else if ($stamp_type == "Uscita") { //Se la timbratura è uscita $minutes = CalcMinutesBetweenTimes($entry_time, $exit_time); $worked_minutes += $minutes; //Controllo il tempo massimo ti un turno lavorativo if ($minutes > $max_time_before_break) { echo "Durata turno di lavoro: " . timeFromMinutes($minutes) . " - Massimo: " . timeFromMinutes($max_time_before_break) . "<br>"; $description = "Lavoro nel turno: " . timeFromMinutes($minutes) . " ore"; $suggestion = "" . $max_time_before_break_desc . ": " . timeFromMinutes($max_time_before_break) . ""; InsertProblem($user_id, "Timbratura", $stamp_id, $description, $suggestion, $date, 'day'); } } $index++; } } else { $consecutive_days = 0; } //Se l'ultima timbratura della giornata è entrata if ($last_stamp_type == "Entrata") { $minutes = CalcMinutesBetweenTimes($entry_time, "24:00:00"); $worked_minutes += $minutes; //Se è la prima entrata della giornata if ($entry_count == 1) { //Controllo il tempo minimo tra un turno e un altro $yesterday = date('Y-m-d', strtotime($stamp_date . ' - 1 days')); $minutes = CalcMinutesBetweenTimes($stamp_date . " " . $stamp_time, $yesterday . " " . $exit_time); if ($minutes < $min_time_between_work_days) { echo "Tempo di riposo: " . timeFromMinutes($minutes) . " - Tempo minimo: " . timeFromMinutes($min_time_between_work_days) . "<br>"; $description = "Il tempo di riposo dal turno precedente è " . timeFromMinutes($minutes) . " ore"; $suggestion = "" . $min_time_between_work_days_desc . ": " . timeFromMinutes($min_time_between_work_days) . " ore"; InsertProblem($user_id, "Timbratura", $stamp_id, $description, $suggestion, $date, 'day'); } } else { //Controllo il tempo minimo di pausa $minutes = CalcMinutesBetweenTimes($stamp_time, $exit_time); if ($minutes < $min_break_time) { echo "Tempo di pausa: " . timeFromMinutes($minutes) . " - Tempo minimo: " . timeFromMinutes($min_break_time) . "<br>"; $description = "Pausa tra i turni: " . timeFromMinutes($minutes) . " ore"; $suggestion = "" . $min_break_time_desc . ": " . timeFromMinutes($min_break_time) . " ore"; InsertProblem($user_id, "Timbratura", $stamp_id, $description, $suggestion, $date, 'day'); } } } //Controllo il massimo di ore di lavoro in una giornata if ($worked_minutes > $max_day_work_time) { echo "Ore lavorate " . timeFromMinutes($worked_minutes) . " - Massimo " . timeFromMinutes($max_day_work_time) . "<br>"; $description = "Totale ore lavorate nel giorno: " . timeFromMinutes($worked_minutes) . ""; $suggestion = "" . $max_day_work_time_desc . ": " . timeFromMinutes($max_day_work_time) . " ore"; InsertProblem($user_id, "Timbratura", 0, $description, $suggestion, $date, 'day'); } //Controllo se sono stati fatti 12 giorni lavorativi consecutivi e la timbratura d'uscita del 12° giorno è dopo le 13:00 oppure se sono stati fatti più di 12 giorni di lavoro consecutivi if ($consecutive_days == $consecutive_work_days && $stamp_time > $last_consecutive_day_max_time) { echo "Giorni di lavoro consecutivi: $consecutive_days giorni - Ora fine turno: " . timeFromMinutes($stamp_time) . "<br>"; $description = "Giorni di lavoro consecutivi: $consecutive_days giorni - Ora fine turno: " . timeFromMinutes($stamp_time) . ""; $suggestion = "" . $consecutive_work_days_desc . ": " . $consecutive_work_days . " giorni - " . $last_consecutive_day_max_time_desc . ": " . timeFromMinutes($last_consecutive_day_max_time) . " ore"; InsertProblem($user_id, "Timbratura", 0, $description, $suggestion, $date, 'week'); } else if ($consecutive_days > $consecutive_work_days) { echo "Giorni di lavoro consecutivi: $consecutive_days giorni<br>"; $description = "Giorni di lavoro consecutivi: $consecutive_days giorni"; $suggestion = "" . $consecutive_work_days_desc . ": " . $consecutive_work_days . " giorni"; InsertProblem($user_id, "Timbratura", 0, $description, $suggestion, $date, 'week'); } //Controlli sui permessi $permissions_day_minutes = 0; $sql = "SELECT * FROM permissions WHERE user_id = $user_id AND '$date' BETWEEN start_date AND end_date AND status_id = 2"; $result_permissions = mysqli_query($con, $sql); if (($result_permissions->num_rows > 0) && ($day_type == "Festivo")) { //Controllo permessi in giorni festivi echo "Non ci possono essere permessi in un giorno festivo"; $description = "Non ci possono essere permessi in un giorno festivo"; $suggestion = "Rimuovere i permessi dalla giornata"; InsertProblem($user_id, "Permesso", 0, $description, $suggestion, $date, 'day'); } else { while ($permissions = mysqli_fetch_assoc($result_permissions)) { if ($permissions["full_day"] == true) { //Se è giornata intera aggiungo 8 ore $permissions_day_minutes += $day_minutes; } else { if ($permissions["start_date"] == $date && $permissions["end_date"] != $date) { //Se la data inizio permesso è uguale alla data del ciclo e la fine è dopo faccio la differenza tra ora inizio e 23:59:59 $timeObject1 = date_create('24:00:00'); $timeObject2 = date_create($permissions["start_time"]); $interval = date_diff($timeObject1, $timeObject2); $permission_time = $interval->days * 24 * 60; $permission_time += $interval->h * 60; $permission_time += $interval->i; $remaining_minutes = $day_minutes - $worked_minutes; if ($remaining_minutes > 0) { if ($remaining_minutes > $permission_time) { $permissions_day_minutes += $permission_time; } else { $permissions_day_minutes += $remaining_minutes; } } else { $permissions_day_minutes += $permission_time; } } else if ($permissions["end_date"] == $date && $permissions["start_date"] != $date) { //Se la data fine permesso è uguale alla data del ciclo e l'inizio è prima faccio la differenza tra ora fine e 00:00:00 $timeObject1 = date_create($permissions["end_time"]); $timeObject2 = date_create('00:00:00'); $interval = date_diff($timeObject1, $timeObject2); $permission_time = $interval->days * 24 * 60; $permission_time += $interval->h * 60; $permission_time += $interval->i; $remaining_minutes = $day_minutes - $worked_minutes; if ($remaining_minutes > 0) { if ($remaining_minutes > $permission_time) { $permissions_day_minutes += $permission_time; } else { $permissions_day_minutes += $remaining_minutes; } } else { $permissions_day_minutes += $permission_time; } } else if ($permissions["end_date"] == $date && $permissions["start_date"] == $date) { //Se la data inizio e fine permesso sono la data del ciclo faccio la differenza tra inizio e fine permesso $timeObject1 = date_create($permissions["end_time"]); $timeObject2 = date_create($permissions["start_time"]); $interval = date_diff($timeObject1, $timeObject2); $permission_time = $interval->days * 24 * 60; $permission_time += $interval->h * 60; $permission_time += $interval->i; $permissions_day_minutes += $permission_time; } else { //Se la data del ciclo è compresa tra la data inizio e fine permesso $permissions_day_minutes += $day_minutes; } } } } if ($day_type == "Lavorativo") { //Controllo se le ore lavorate + le ore di permesso sono minori di 8 $total_day_minutes = $worked_minutes + $permissions_day_minutes; if ($total_day_minutes < $day_minutes) { if ($total_day_minutes == 0) { echo "Ore totali timbrature e permessi: 00:00 - Ore minime: 08:00"; $description = "Ore totali timbrature e permessi: 00:00"; } else { echo "Ore totali timbrature e permessi: " . timeFromMinutes($total_day_minutes) . " - Ore minime: 08:00"; $description = "Ore totali timbrature e permessi: " . timeFromMinutes($total_day_minutes) . ""; } $suggestion = "In un giorno lavorativo di devono essere almeno 8:00 ore tra timbrature e permessi"; InsertProblem($user_id, "Tutto", 0, $description, $suggestion, $date, 'day'); } if (($permissions_day_minutes > 0) && ($worked_minutes >= $day_minutes)) { echo "Non si possono richiedere permessi se si sono lavorate almeno 08:00 ore"; $description = "Non si possono richiedere permessi se si sono lavorate almeno 08:00 ore"; $suggestion = "Diminuire l'orario di lavoro o rimuovere i permessi dalla giornata"; InsertProblem($user_id, "Tutto", 0, $description, $suggestion, $date, 'day'); } } } } echo "ok"; $con->close();
Simpan
Batal
Isi Zip:
Unzip
Create
Buat Folder
Buat File
Terminal / Execute
Run
Chmod Bulk
All File
All Folder
All File dan Folder
Apply