<?php
require_once "../modelos/AgendaAPI.php";

$agenda = new AgendaAPI();

$op = isset($_GET["op"]) ? $_GET["op"] : "";

switch ($op) {
    case 'listar':
        // Lógica de "Auto-limpieza" a las 23:30
        $horaCorte = '23:30';
        $horaActual = date('H:i');
        $fechaActual = date('Y-m-d');

        // Si no se especifica fecha de inicio (ej. carga inicial)
        if (!isset($_GET['start'])) {
            if ($horaActual >= $horaCorte) {
                // Si ya pasaron las 23:30, mostrar desde mañana
                $fechaInicio = date('Y-m-d', strtotime('+1 day')) . 'T00:00:00Z';
            } else {
                // Si es antes de las 23:30, mostrar desde hoy
                $fechaInicio = date('Y-m-d') . 'T00:00:00Z';
            }
        } else {
            $fechaInicio = $_GET['start'];
        }

        $fechaFin = isset($_GET['end']) ? $_GET['end'] : date('Y-m-d', strtotime('+30 days')) . 'T23:59:59Z';

        $bookings = $agenda->listarBookings($fechaInicio, $fechaFin);

        $data = array();

        foreach ($bookings as $booking) {
            $attendees = "";
            if (isset($booking['attendees']) && is_array($booking['attendees'])) {
                foreach ($booking['attendees'] as $att) {
                    $attendees .= $att['name'] . " (" . $att['email'] . ")<br>";
                }
            }

            $status_label = '<span class="label bg-blue">Unknown</span>';
            if (isset($booking['status'])) {
                if ($booking['status'] == 'ACCEPTED')
                    $status_label = '<span class="label bg-green">Aceptado</span>';
                elseif ($booking['status'] == 'CANCELLED')
                    $status_label = '<span class="label bg-red">Cancelado</span>';
                elseif ($booking['status'] == 'PENDING')
                    $status_label = '<span class="label bg-yellow">Pendiente</span>';
            }

            $fecha = date("d/m/Y H:i", strtotime($booking['startTime']));

            $data[] = array(
                "0" => $fecha,
                "1" => $booking['title'],
                "2" => $attendees,
                "3" => $status_label,
                "4" => '<button class="btn btn-success btn-xs" onclick="atender(\'' . $booking['id'] . '\')" title="Marcar Atendida"><i class="fa fa-check"></i></button> ' .
                    '<button class="btn btn-danger btn-xs" onclick="eliminar(\'' . $booking['id'] . '\')" title="Ocultar de la lista"><i class="fa fa-trash"></i></button>'
            );
        }

        $results = array(
            "sEcho" => 1, //Información para el datatables
            "iTotalRecords" => count($data), //enviamos el total registros al datatable
            "iTotalDisplayRecords" => count($data), //enviamos el total registros a visualizar
            "aaData" => $data
        );
        echo json_encode($results);

        break;

    case 'atender':
        $bookingId = isset($_POST["bookingId"]) ? $_POST["bookingId"] : "";
        $rspta = $agenda->marcarAtendida($bookingId);
        echo $rspta ? "Cita marcada como atendida" : "No se pudo actualizar la cita";
        break;

    case 'eliminar':
        $bookingId = isset($_POST["bookingId"]) ? $_POST["bookingId"] : "";
        $rspta = $agenda->eliminarBooking($bookingId);
        echo $rspta ? "Cita eliminada de la lista" : "No se pudo eliminar la cita";
        break;

    case 'notificaciones':
        $citas = $agenda->obtenerUltimasCitas();
        echo json_encode($citas);
        break;
}
?>