<?php
// ../../Controlador/Ctrl_Administrador/MySQL_Listar_Choferes_DT.php
declare(strict_types=1);

// ---- Cabeceras para evitar caché en navegadores y proxies ----
header('Content-Type: application/json; charset=utf-8');
header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Expires: 0');
// (Opcional) Para CDNs reversos:
// header('Surrogate-Control: no-store');

require_once __DIR__ . '/../Utilidades/Conexion_BD.php';
require_once __DIR__ . '/MySQL_Mostrar_Choferes.php';

/** Normaliza 'YYYY-MM-DD' o devuelve '' si es inválida/nula. */
function normalizarFecha(?string $f): string {
    if (!$f) return '';
    // Admite 'YYYY-MM-DD' o 'YYYY-MM-DD HH:MM:SS'
    if (preg_match('/^\d{4}-\d{2}-\d{2}/', $f, $m)) {
        return substr($m[0], 0, 10);
    }
    return '';
}

try {
    $conn = new Conexion_BD();
    $MostrarChoferes = new MostrarChoferes($conn);

    // IMPORTANTE: El SELECT debe incluir fecha_estado_desde
    // ej: SELECT id, nombres, apellidos, dni, categoria_licencia, telefono, estado, motivo_estado, fecha_estado_desde FROM choferes
    $rows = $MostrarChoferes->ObtenerTodosLosChoferes();

    $out = [];
    foreach ($rows as $c) {
        $out[] = [
            'id'                 => isset($c['id']) ? (int)$c['id'] : 0,
            'nombres'            => (string)($c['nombres'] ?? ''),
            'apellidos'          => (string)($c['apellidos'] ?? ''),
            'dni'                => (string)($c['dni'] ?? ''),
            'categoria_licencia' => (string)($c['categoria_licencia'] ?? ''),
            'telefono'           => (string)($c['telefono'] ?? ''),
            'estado'             => strtolower((string)($c['estado'] ?? '')), // activo|descanso|vacaciones|desincorporado
            'motivo_estado'      => (string)($c['motivo_estado'] ?? ''),
            'fecha_estado_desde' => normalizarFecha($c['fecha_estado_desde'] ?? null),
        ];
    }

    echo json_encode($out, JSON_UNESCAPED_UNICODE);
} catch (Throwable $e) {
    http_response_code(500);
    echo json_encode([
        'error'   => true,
        'message' => 'Error al listar choferes',
        'detail'  => $e->getMessage(),
    ], JSON_UNESCAPED_UNICODE);
} finally {
    if (isset($conn)) {
        $conn->closeConnection();
    }
}
