<?php
// ../../Controlador/Ctrl_Administrador/MySQL_Listar_Vehiculos_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 extra para CDNs reversos)
// header('Surrogate-Control: no-store');

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

/**
 * Normaliza una fecha a 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();
    $MostrarVehiculos = new MostrarVehiculos($conn);

    /**
     * Debe retornar cada vehículo con, al menos, estas claves:
     * id, placa, ano_fabricacion, marca, modelo, tipo_vehiculo,
     * tipo_combustible, capacidad_combustible, kilometraje_inicial,
     * estado, motivo_estado, fecha_estado_desde
     */
    $rows = $MostrarVehiculos->ObtenerTodosLosVehiculos();

    $out = [];
    foreach ($rows as $v) {
        $out[] = [
            'id'                     => isset($v['id']) ? (int)$v['id'] : 0,
            'placa'                  => (string)($v['placa'] ?? ''),
            'ano_fabricacion'        => (string)($v['ano_fabricacion'] ?? ''), // string para no forzar formato
            'marca'                  => (string)($v['marca'] ?? ''),
            'modelo'                 => (string)($v['modelo'] ?? ''),
            'tipo_vehiculo'          => (string)($v['tipo_vehiculo'] ?? ''),
            'tipo_combustible'       => (string)($v['tipo_combustible'] ?? ''),
            'capacidad_combustible'  => isset($v['capacidad_combustible']) ? (float)$v['capacidad_combustible'] : 0.0,
            'kilometraje_inicial'    => isset($v['kilometraje_inicial']) ? (int)$v['kilometraje_inicial'] : 0,
            'estado'                 => strtolower((string)($v['estado'] ?? '')), // normalizado
            'motivo_estado'          => (string)($v['motivo_estado'] ?? ''),
            'fecha_estado_desde'     => normalizarFecha($v['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 vehículos',
        'detail'  => $e->getMessage(),
    ], JSON_UNESCAPED_UNICODE);
} finally {
    if (isset($conn)) {
        $conn->closeConnection();
    }
}
