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

header('Content-Type: application/json; charset=UTF-8');
@ini_set('default_charset', 'UTF-8');
if (function_exists('mb_internal_encoding')) { @mb_internal_encoding('UTF-8'); }

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

try {
    $conn    = new Conexion_BD();
    $mostrar = new MostrarAbastecimientos($conn);
    $rows    = $mostrar->ObtenerTodos();   // Debe devolver un array asociativo
    $conn->closeConnection();

    $rows = is_array($rows) ? $rows : [];

    // Normalización/aseguramiento de tipos para DataTables (vehículos)
    $out = array_map(function(array $r): array {
        // Casts seguros (si falta el valor, devolvemos tipo compatible)
        $id          = isset($r['id']) ? (int)$r['id'] : 0;
        $fecha       = (string)($r['fecha_abastecimiento'] ?? '');
        $hora        = (string)($r['hora_abastecimiento'] ?? '');
        $vehiculo    = (string)($r['vehiculo'] ?? '');
        $chofer      = (string)($r['chofer'] ?? '');
        $combustible = (string)($r['combustible_abastecido'] ?? '');
        // Numéricos: mantener crudos para que el front redondee/forme a 2 dec.
        $gln         = array_key_exists('cantidad_gln', $r) ? (float)$r['cantidad_gln'] : 0.0;
        $vu          = array_key_exists('valor_unitario_gln', $r) ? (float)$r['valor_unitario_gln'] : 0.0;
        $km          = array_key_exists('kilometraje', $r) ? (float)$r['kilometraje'] : 0.0;
        $grifo       = (string)($r['grifo'] ?? '');
        $vale        = (string)($r['numero_vale'] ?? '');

        return [
            'id'                     => $id,
            'fecha_abastecimiento'   => $fecha,
            'hora_abastecimiento'    => $hora,
            'vehiculo'               => $vehiculo,
            'chofer'                 => $chofer,
            'combustible_abastecido' => $combustible,
            'cantidad_gln'           => $gln,   // mantiene hasta 5 decimales guardados
            'valor_unitario_gln'     => $vu,    // se mostrará a 2 decimales en el front
            'kilometraje'            => $km,
            'grifo'                  => $grifo,
            'numero_vale'            => $vale
        ];
    }, $rows);

    echo json_encode($out, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);

} catch (Throwable $e) {
    http_response_code(500);
    echo json_encode([
        'error'   => true,
        'message' => 'Error al listar abastecimientos de vehículos.',
        'detail'  => $e->getMessage()
    ], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
}
