format('Y-m-d'); $entry_time_1 = ""; $entry_time_2 = ""; $entry_time_3 = ""; $entry_time_4 = ""; $exit_time_1 = ""; $exit_time_2 = ""; $exit_time_3 = ""; $exit_time_4 = ""; $theorical_minutes = 0; $worked_minutes = 0; $justification_id_1 = 0; $justification_id_2 = 0; $justification_id_3 = 0; $justification_id_4 = 0; $justification_id_5 = 0; $justification_id_6 = 0; $justification_minutes_1 = 0; $justification_minutes_2 = 0; $justification_minutes_3 = 0; $justification_minutes_4 = 0; $justification_minutes_5 = 0; $justification_minutes_6 = 0; $day_type = ""; $entry_time = ""; $exit_time = ""; $dt1 = strtotime($date); $dt2 = date("l", $dt1); $dt3 = strtolower($dt2); if ($dt3 == "saturday") { $day_type = "SA"; $theorical_minutes = 0; } else if ($dt3 == "sunday") { $day_type = "DO"; $theorical_minutes = 0; } else { $day_type = "GL"; $theorical_minutes = 480; $total_theorical_minutes += 480; } $sql = "SELECT * FROM stamps WHERE date = '$date' AND user_id = " . $users["id"] . " ORDER BY time ASC"; $result_stamps = mysqli_query($con, $sql); while ($stamp_row = mysqli_fetch_assoc($result_stamps)) { if ($stamp_row["type"] == "Entrata") { $hour = date("H", strtotime($stamp_row["time"])); $minutes = date("i", strtotime($stamp_row["time"])); if ($minutes == 00) { $entry_time = $hour . ":00"; } else if ($minutes > 00 && $minutes <= 15) { $entry_time = $hour . ":15"; } else if ($minutes > 15 && $minutes <= 30) { $entry_time = $hour . ":30"; } else if ($minutes > 30 && $minutes <= 45) { $entry_time = $hour . ":45"; } else if ($minutes > 45 && $minutes < 60) { $entry_time = ($hour + 1) . ":00"; } if ($entry_time_1 == "") { $entry_time_1 = $stamp_row["time"]; } else if ($entry_time_2 == "") { $entry_time_2 = $stamp_row["time"]; } else if ($entry_time_3 == "") { $entry_time_3 = $stamp_row["time"]; } else if ($entry_time_4 == "") { $entry_time_4 = $stamp_row["time"]; } } else if ($stamp_row["type"] == "Uscita") { $hour = date("H", strtotime($stamp_row["time"])); $minutes = date("i", strtotime($stamp_row["time"])); if ($minutes >= 00 && $minutes < 15) { $exit_time = $hour . ":00"; } else if ($minutes >= 15 && $minutes < 30) { $exit_time = $hour . ":15"; } else if ($minutes >= 30 && $minutes < 45) { $exit_time = $hour . ":30"; } else if ($minutes >= 45 && $minutes < 60) { $exit_time = $hour . ":45"; } if ($exit_time_1 == "") { $exit_time_1 = $stamp_row["time"]; } else if ($exit_time_2 == "") { $exit_time_2 = $stamp_row["time"]; } else if ($exit_time_3 == "") { $exit_time_3 = $stamp_row["time"]; } else if ($exit_time_4 == "") { $exit_time_4 = $stamp_row["time"]; } $exit = date_create($exit_time); $entry = date_create($entry_time); $interval = date_diff($exit, $entry); $work = $interval->days * 24 * 60; $work += $interval->h * 60; $work += $interval->i; $worked_minutes += $work; } } if ($day_type == "GL") { $sql = "SELECT * FROM permissions WHERE '$date' BETWEEN start_date AND end_date AND user_id = " . $users["id"] . " AND status_id = 1"; $result_permissions = mysqli_query($con, $sql); while ($permission_row = mysqli_fetch_assoc($result_permissions)) { $justification_min = 0; if ($permission_row["full_day"] == 1) { $justification_min = 480; } else { if ($permission_row["start_date"] == $date && $permission_row["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('23:59:59'); $timeObject2 = date_create($permission_row["start_date"]); $interval = date_diff($timeObject1, $timeObject2); $permission_time = $interval->days * 24 * 60; $permission_time += $interval->h * 60; $permission_time += $interval->i; $justification_min = $permission_time; } else if ($permission_row["end_date"] == $date && $permission_row["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_row["end_date"]); $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; $justification_min = $permission_time; } else if ($permission_row["end_date"] == $date && $permission_row["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_row["end_date"]); $timeObject2 = date_create($permission_row["start_date"]); $interval = date_diff($timeObject1, $timeObject2); $permission_time = $interval->days * 24 * 60; $permission_time += $interval->h * 60; $permission_time += $interval->i; $justification_min = $permission_time; } else { //Se la data del ciclo è compresa tra la data inizio e fine permesso $justification_min = 480; } } if ($justification_id_1 == 0) { $justification_id_1 = $permission_row["justification_id"]; $justification_minutes_1 = $justification_min; } else if ($justification_id_2 == 0) { $justification_id_2 = $permission_row["justification_id"]; $justification_minutes_2 = $justification_min; } else if ($justification_id_3 == 0) { $justification_id_3 = $permission_row["justification_id"]; $justification_minutes_3 = $justification_min; } else if ($justification_id_4 == 0) { $justification_id_4 = $permission_row["justification_id"]; $justification_minutes_4 = $justification_min; } else if ($justification_id_5 == 0) { $justification_id_5 = $permission_row["justification_id"]; $justification_minutes_5 = $justification_min; } else if ($justification_id_6 == 0) { $justification_id_6 = $permission_row["justification_id"]; $justification_minutes_6 = $justification_min; } if ($permission_row["justification_id"] == 1) { $total_justification_minutes_1 += $justification_min; } else if ($permission_row["justification_id"] == 2) { $total_justification_minutes_2 += $justification_min; } else if ($permission_row["justification_id"] == 3) { $total_justification_minutes_3 += $justification_min; } else if ($permission_row["justification_id"] == 4) { $total_justification_minutes_4 += $justification_min; } else if ($permission_row["justification_id"] == 5) { $total_justification_minutes_5 += $justification_min; } else if ($permission_row["justification_id"] == 6) { $total_justification_minutes_6 += $justification_min; } else if ($permission_row["justification_id"] == 7) { $total_justification_minutes_7 += $justification_min; } else if ($permission_row["justification_id"] == 8) { $total_justification_minutes_8 += $justification_min; } else if ($permission_row["justification_id"] == 9) { $total_justification_minutes_9 += $justification_min; } else if ($permission_row["justification_id"] == 10) { $total_justification_minutes_10 += $justification_min; } else if ($permission_row["justification_id"] == 11) { $total_justification_minutes_11 += $justification_min; } else if ($permission_row["justification_id"] == 12) { $total_justification_minutes_12 += $justification_min; } } } //Inserisco riga della giornata su DB $sql_insert = "INSERT INTO attendance_rows VALUES(NULL, 1, " . $users["id"] . ", '" . date("Y-m-d", strtotime($date)) . "', '$entry_time_1','$exit_time_1','$entry_time_2','$exit_time_2','$entry_time_3','$exit_time_3','$entry_time_4','$exit_time_4',$theorical_minutes,$worked_minutes,$justification_id_1,$justification_minutes_1,$justification_id_2,$justification_minutes_2,$justification_id_3,$justification_minutes_3,$justification_id_4,$justification_minutes_4,$justification_id_5,$justification_minutes_5,$justification_id_6,$justification_minutes_6,'$day_type')"; $con->query($sql_insert); $total_worked_minutes += $worked_minutes; if ($worked_minutes > $theorical_minutes) { $total_overtired_minutes += $worked_minutes - $theorical_minutes; } echo $date . " --> Teorici: " . $theorical_minutes . "; Lavoro: " . $worked_minutes . "; Straordinari: " . $total_overtired_minutes; echo "
"; } $progressive = 1; if ($total_worked_minutes > 0) { //Inserisco riga totale ore lavorate $sql_insert = "INSERT INTO attendance_users VALUES(NULL, 1, " . $users["id"] . ", $progressive, 0, $total_worked_minutes,1,0,0)"; $con->query($sql_insert); $progressive++; } if ($total_theorical_minutes > 0) { //Inserisco riga totale ore teoriche $sql_insert = "INSERT INTO attendance_users VALUES(NULL, 1, " . $users["id"] . ", $progressive, 0, $total_theorical_minutes,0,1,0)"; $con->query($sql_insert); $progressive++; } if ($total_overtired_minutes > 0) { //Inserisco riga totale ore straordinario $sql_insert = "INSERT INTO attendance_users VALUES(NULL, 1, " . $users["id"] . ", $progressive, 0, $total_overtired_minutes,0,0,1)"; $con->query($sql_insert); $progressive++; } $sql_justifications = "SELECT * FROM justifications"; $result_justifications = mysqli_query($con, $sql_justifications); while ($row_justification = mysqli_fetch_assoc($result_justifications)) { if (($row_justification["id"] == 1) && ($total_justification_minutes_1 > 0)) { //Inserisco riga giustificativo $sql_insert = "INSERT INTO attendance_users VALUES(NULL, 1, " . $users["id"] . ", $progressive, " . $row_justification["id"] . ", $total_justification_minutes_1,0,0,0)"; $con->query($sql_insert); $progressive++; } else if (($row_justification["id"] == 2) && ($total_justification_minutes_2 > 0)) { //Inserisco riga giustificativo $sql_insert = "INSERT INTO attendance_users VALUES(NULL, 1, " . $users["id"] . ", $progressive, " . $row_justification["id"] . ", $total_justification_minutes_2,0,0,0)"; $con->query($sql_insert); $progressive++; } else if (($row_justification["id"] == 3) && ($total_justification_minutes_3 > 0)) { //Inserisco riga giustificativo $sql_insert = "INSERT INTO attendance_users VALUES(NULL, 1, " . $users["id"] . ", $progressive, " . $row_justification["id"] . ", $total_justification_minutes_3,0,0,0)"; $con->query($sql_insert); $progressive++; } else if (($row_justification["id"] == 4) && ($total_justification_minutes_4 > 0)) { //Inserisco riga giustificativo $sql_insert = "INSERT INTO attendance_users VALUES(NULL, 1, " . $users["id"] . ", $progressive, " . $row_justification["id"] . ", $total_justification_minutes_4,0,0,0)"; $con->query($sql_insert); $progressive++; } else if (($row_justification["id"] == 5) && ($total_justification_minutes_5 > 0)) { //Inserisco riga giustificativo $sql_insert = "INSERT INTO attendance_users VALUES(NULL, 1, " . $users["id"] . ", $progressive, " . $row_justification["id"] . ", $total_justification_minutes_5,0,0,0)"; $con->query($sql_insert); $progressive++; } else if (($row_justification["id"] == 6) && ($total_justification_minutes_6 > 0)) { //Inserisco riga giustificativo $sql_insert = "INSERT INTO attendance_users VALUES(NULL, 1, " . $users["id"] . ", $progressive, " . $row_justification["id"] . ", $total_justification_minutes_6,0,0,0)"; $con->query($sql_insert); $progressive++; } else if (($row_justification["id"] == 7) && ($total_justification_minutes_7 > 0)) { //Inserisco riga giustificativo $sql_insert = "INSERT INTO attendance_users VALUES(NULL, 1, " . $users["id"] . ", $progressive, " . $row_justification["id"] . ", $total_justification_minutes_7,0,0,0)"; $con->query($sql_insert); $progressive++; } else if (($row_justification["id"] == 8) && ($total_justification_minutes_8 > 0)) { //Inserisco riga giustificativo $sql_insert = "INSERT INTO attendance_users VALUES(NULL, 1, " . $users["id"] . ", $progressive, " . $row_justification["id"] . ", $total_justification_minutes_8,0,0,0)"; $con->query($sql_insert); $progressive++; } else if (($row_justification["id"] == 9) && ($total_justification_minutes_9 > 0)) { //Inserisco riga giustificativo $sql_insert = "INSERT INTO attendance_users VALUES(NULL, 1, " . $users["id"] . ", $progressive, " . $row_justification["id"] . ", $total_justification_minutes_9,0,0,0)"; $con->query($sql_insert); $progressive++; } else if (($row_justification["id"] == 10) && ($total_justification_minutes_10 > 0)) { //Inserisco riga giustificativo $sql_insert = "INSERT INTO attendance_users VALUES(NULL, 1, " . $users["id"] . ", $progressive, " . $row_justification["id"] . ", $total_justification_minutes_10,0,0,0)"; $con->query($sql_insert); $progressive++; } else if (($row_justification["id"] == 11) && ($total_justification_minutes_11 > 0)) { //Inserisco riga giustificativo $sql_insert = "INSERT INTO attendance_users VALUES(NULL, 1, " . $users["id"] . ", $progressive, " . $row_justification["id"] . ", $total_justification_minutes_11,0,0,0)"; $con->query($sql_insert); $progressive++; } else if (($row_justification["id"] == 12) && ($total_justification_minutes_12 > 0)) { //Inserisco riga giustificativo $sql_insert = "INSERT INTO attendance_users VALUES(NULL, 1, " . $users["id"] . ", $progressive, " . $row_justification["id"] . ", $total_justification_minutes_12,0,0,0)"; $con->query($sql_insert); $progressive++; } } } $con->close();