<?php
session_start();
if (!isset($_SESSION['loggedin'])) {
    exit("unauthorized");
}

include "../database.php";
include "../globals.php";
require_once '../../plugins/sendgrid/config.php';
require "../../plugins/sendgrid/sendgrid-php.php";

$permission_id = $_POST["permission_id"];
$permission_justification = $_POST["permission_justification"];
$permission_full_day = $_POST["permission_full_day"];
$permission_start_date = $_POST["permission_start_date"];
$permission_end_date = $_POST["permission_end_date"];
$permission_start_time = $_POST["permission_start_time"];
$permission_end_time = $_POST["permission_end_time"];
$permission_note = $_POST["permission_note"];
$permission_status = $_POST["permission_status"];

if ($permission_full_day == "true") {
    $full_day = 1;
} else {
    $full_day = 0;
}

$sql_justification        = "SELECT * FROM justifications WHERE id = $permission_justification";
$result_justification     = mysqli_query($con, $sql_justification);
$justification = mysqli_fetch_assoc($result_justification);

$start_datetime = $permission_start_date . " " . $permission_start_time;
$end_datetime = $permission_end_date . " " . $permission_end_time;

$sql_attendance    = "SELECT * FROM attendance WHERE month = " . date("m", strtotime($permission_start_date)) . " AND year = " . date("Y", strtotime($permission_start_date)) . " AND closed = 1";
$result_attendance = mysqli_query($con, $sql_attendance);
if ($result_attendance->num_rows > 0) {
    echo "attendancePresent";
    exit;
}

$sql_attendance    = "SELECT * FROM attendance WHERE month = " . date("m", strtotime($permission_end_date)) . " AND year = " . date("Y", strtotime($permission_end_date)) . " AND closed = 1";
$result_attendance = mysqli_query($con, $sql_attendance);
if ($result_attendance->num_rows > 0) {
    echo "attendancePresent";
    exit;
}

$sql_attendance    = "SELECT * FROM attendance WHERE month BETWEEN " . date("m", strtotime($permission_start_date)) . " AND " . date("m", strtotime($permission_end_date)) . " AND year = " . date("Y", strtotime($permission_start_date)) . " AND closed = 1";
$result_attendance = mysqli_query($con, $sql_attendance);
if ($result_attendance->num_rows > 0) {
    echo "attendancePresent";
    exit;
}

if (($_SESSION["role"] == "Admin") || ($permission['status_id'] == 1)) {
    $sql_update = "UPDATE permissions SET justification_id = " . $permission_justification . ", full_day = " . $permission_full_day . ", start_date = '" . $permission_start_date . "', end_date = '" . $permission_end_date . "', start_time = '" . $permission_start_time . "', end_time = '" . $permission_end_time . "', note = '" . $permission_note . "', status_id = $permission_status  WHERE id = " . $permission_id . "";
    if ($con->query($sql_update)) {
        $sql_attendance    = "SELECT * FROM attendance WHERE month = " . date("m", strtotime($permission_start_date)) . " AND year = " . date("Y", strtotime($permission_start_date)) . "";
        $result_attendance = mysqli_query($con, $sql_attendance);
        if ($result_attendance->num_rows > 0) {
            $attendance        = mysqli_fetch_assoc($result_attendance);

            $sql_update = "UPDATE attendance SET status = 'Da ricalcolare' WHERE id = " . $attendance["id"] . "";
            $con->query($sql_update);
        }

        $sql_attendance    = "SELECT * FROM attendance WHERE month = " . date("m", strtotime($permission_end_date)) . " AND year = " . date("Y", strtotime($permission_end_date)) . "";
        $result_attendance = mysqli_query($con, $sql_attendance);
        if ($result_attendance->num_rows > 0) {
            $attendance        = mysqli_fetch_assoc($result_attendance);

            $sql_update = "UPDATE attendance SET status = 'Da ricalcolare' WHERE id = " . $attendance["id"] . "";
            $con->query($sql_update);
        }

        $sql_attendance    = "SELECT * FROM attendance WHERE month BETWEEN " . date("m", strtotime($permission_start_date)) . " AND " . date("m", strtotime($permission_end_date)) . " AND year = " . date("Y", strtotime($permission_start_date)) . "";
        $result_attendance = mysqli_query($con, $sql_attendance);
        if ($result_attendance->num_rows > 0) {
            $attendance        = mysqli_fetch_assoc($result_attendance);

            $sql_update = "UPDATE attendance SET status = 'Da ricalcolare' WHERE id = " . $attendance["id"] . "";
            $con->query($sql_update);
        }

        echo "updated";
    } else {
        echo "error";
    }
} else if ($_SESSION["role"] == "Utente") {
    $sql = "UPDATE permissions SET request_update = 1 WHERE id = $permission_id";
    if ($con->query($sql) == true) {
        $sql_permissions        = "SELECT * FROM permissions WHERE id = $permission_id";
        $result_permissions    = mysqli_query($con, $sql_permissions);
        $permission = mysqli_fetch_assoc($result_permissions);

        $sql_justification_old        = "SELECT * FROM justifications WHERE id = " . $permission["justification_id"] . "";
        $result_justification_old     = mysqli_query($con, $sql_justification_old);
        $justification_old = mysqli_fetch_assoc($result_justification_old);


        $sql_approve = "SELECT * FROM users WHERE role = 'Admin' AND permissions_approver = 1";
        $result_approve = mysqli_query($con, $sql_approve);
        while ($row_approve = mysqli_fetch_assoc($result_approve)) {
            $email = new \SendGrid\Mail\Mail();
            $email->setFrom("info@n-hub.com", "NH-HR");
            $email->addTo("" . $row_approve["email"] . "", "" . $row_approve["name"] . " " . $row_approve["surname"] . "");
            $email->SetTemplateId("d-bc1188e2debf4ece9e6e3a0af64cf24c");
            $email->addDynamicTemplateData("NHHR_richiedente", "" . $_SESSION["username"] . "");
            $email->addDynamicTemplateData("NHHR_data_richiesta", "" . date('d/m/Y H:i') . "");

            $email->addDynamicTemplateData("NHHR_giustificativo_old", "" . $justification_old["name"] . "");
            if ($permission["full_day"] == 1) {
                $email->addDynamicTemplateData("NHHR_giornata_intera_old", "SI");
            } else {
                $email->addDynamicTemplateData("NHHR_giornata_intera_old", "NO");
            }
            $email->addDynamicTemplateData("NHHR_data_inizio_old", "" . date('d/m/Y', strtotime($permission['start_date'])) . "");
            $email->addDynamicTemplateData("NHHR_data_fine_old", "" . date('d/m/Y', strtotime($permission['end_date'])) . "");
            $email->addDynamicTemplateData("NHHR_ora_inizio_old", "" . date('H:i', strtotime($permission['start_time'])) . "");
            $email->addDynamicTemplateData("NHHR_ora_fine_old", "" . date('H:i', strtotime($permission['end_time'])) . "");
            $email->addDynamicTemplateData("NHHR_note_old", "" . $permission['note'] . "");

            $email->addDynamicTemplateData("NHHR_giustificativo", "" . $justification["name"] . "");
            if ($permission_full_day == 1) {
                $email->addDynamicTemplateData("NHHR_giornata_intera", "SI");
            } else {
                $email->addDynamicTemplateData("NHHR_giornata_intera", "NO");
            }
            $email->addDynamicTemplateData("NHHR_data_inizio", "" . date('d/m/Y', strtotime($permission_start_date)) . "");
            $email->addDynamicTemplateData("NHHR_data_fine", "" . date('d/m/Y', strtotime($permission_end_date)) . "");
            $email->addDynamicTemplateData("NHHR_ora_inizio", "" . date('H:i', strtotime($permission_start_time)) . "");
            $email->addDynamicTemplateData("NHHR_ora_fine", "" . date('H:i', strtotime($permission_end_time)) . "");
            $email->addDynamicTemplateData("NHHR_note", "" . $permission_note . "");

            $email->addDynamicTemplateData("NHHR_Link_Gestisci", $manage_permission_url . "?permission_id=" . $permission_id . "&&user_id=" . $permission["user_id"]);
            $sendgrid = new \SendGrid(SENDGRID_API_KEY);
            try {
                $response = $sendgrid->send($email);
            } catch (Exception $e) {
                echo 'Caught exception: ' . $e->getMessage() . "\n";
            }
        }

        echo "requested";
    } else {
        echo "error";
    }
}

$con->close();
