<?php

/**************    Include cabecera  ***********************************/
require_once dirname(__DIR__) . '/../index_ajax.php';

// Valido fecha de la reserva a modificar
if ($_POST['fecha'] == 0) {
    echo 0;
} else {

    // Compruebo que la fecha introducida es válida
    $fecha_intr           = cambiaf_a_mysql($_POST['fecha']);
    $_POST['localizador'] = strtoupper(trim($_POST['localizador']));

    $filtro_instalacion = "";
    $lista_instalacion  = "";

    if (arrayHasOnlyInts( (array)json_decode($_ENV['FILTROINSTALACION_ARRAY'],true))){          
        $lista_instalacion= implode(",", (array)json_decode($_ENV['FILTROINSTALACION_ARRAY'],true));
        $filtro_instalacion = " AND r.instalacion_id in ( $lista_instalacion ) " ;
    }

    $sql_reservas = "SELECT sh.fecha, r.fecha_reserva, r.sala_horario_id, r.cancelada, s.s_instalacion, s.antelacion_maxima_cancelacion
                     FROM reservas r JOIN sala_horarios sh ON r.sala_horario_id = sh.id
                     JOIN sala_horario_servicios ss ON sh.id = ss.sala_horario_id
                     JOIN servicios s ON ss.servicio_id = s.id
                     AND localizador = :localizador 
                     AND sh.fecha = :fecha_intr  " . $filtro_instalacion . "
                     ORDER BY r.id ASC";
  
    $result_reserva = $conexion->prepare($sql_reservas);

    $result_reserva->execute(array( 
        ':localizador' => $_POST['localizador'],
        ':fecha_intr'  => $fecha_intr,      
    ));
   

    if ($result_reserva->rowCount() > 0) {
        $row_reserva = $result_reserva->fetch(PDO::FETCH_ASSOC);

        // La fecha de reserva introducida corresponde a una reserva cancelada
        if ($row_reserva['cancelada'] == 1) {
            echo 3;
        } else {
            // Compruebo que puede modificar la reserva
            // Busco fecha del horario de la reserva
            $sql_fecha_horario = "SELECT fecha, hora_inicio
                                  FROM sala_horarios
                                  WHERE id = :sala_horario_id ";
    
            $result_fecha_horario = $conexion->prepare($sql_fecha_horario);
            $result_fecha_horario->execute(array(':sala_horario_id' => $row_reserva['sala_horario_id'] ));

            if ($result_fecha_horario->rowCount() > 0) {
                $row_fecha_horario = $result_fecha_horario->fetch(PDO::FETCH_ASSOC);

                // Compruebo que puede modificar reserva
                $horas_antelacion_maxima = $row_reserva['antelacion_maxima_cancelacion'];
                $horas_antelacion_maxima = 12;
                $fecha_hora_actual       = date('Y-m-d H:i:s');

                // Fecha y hora hasta la cual puedo modificar la reserva
                // Fecha y hora que muestro -horas de antelacion máxima
                $fecha_hora_reserva            = $row_fecha_horario['fecha'] . ' ' . $row_fecha_horario['hora_inicio'];
                $fecha_hora_maxima_cancelacion = date("Y-m-d H:i:s", strtotime($fecha_hora_reserva . " -$horas_antelacion_maxima hour"));

                // Puede modificar reserva
                if ($fecha_hora_actual < $fecha_hora_maxima_cancelacion) {
                    echo 1;
                } else {
                    echo 2;
                }
            }
        }
    } else {
        echo 0;
    }
}
