<?php
session_start();
require_once '../../Controlador/Utilidades/Conexion_BD.php';
require_once '../../Controlador/Utilidades/Auditoria.php'; 

// ==========================
// Captura de datos del formulario
// ==========================
$placa = strtoupper(trim($_POST['placa']));
$ano_fabricacion = intval($_POST['ano_fabricacion']);
$marca = strtoupper(trim($_POST['marca']));
$modelo = strtoupper(trim($_POST['modelo']));
$tipo_vehiculo_id = intval($_POST['tipo_vehiculo_id']);
$tipo_combustible_id = intval($_POST['tipo_combustible_id']);

// ✅ Conversión segura del campo capacidad_combustible con coma o punto
$capacidad_raw = trim($_POST['capacidad_combustible']);
$capacidad_raw = str_replace(',', '.', $capacidad_raw); // reemplaza coma por punto
$capacidad_combustible = floatval($capacidad_raw);

$kilometraje_inicial = isset($_POST['kilometraje_inicial']) ? intval($_POST['kilometraje_inicial']) : null;

$conn = new Conexion_BD();
$conexion = $conn->getConnection();

try {
    // ==========================
    // Validación: placa duplicada
    // ==========================
    $sqlVerificar = "SELECT COUNT(*) AS total FROM vehiculos WHERE placa = ?";
    $stmt = $conexion->prepare($sqlVerificar);
    $stmt->bind_param("s", $placa);
    $stmt->execute();
    $resultado = $stmt->get_result();
    $fila = $resultado->fetch_assoc();
    $stmt->close();

    if ($fila['total'] > 0) {
        $_SESSION['error_placa'] = "La placa \"$placa\" ya está registrada.";
        header("Location: ../../Vista/Administrador/Adm_Formulario_Flota.php");
        exit();
    }

    // ==========================
    // Registro del nuevo vehículo
    // ==========================
    $sql = "INSERT INTO vehiculos (
                placa,
                ano_fabricacion,
                marca,
                modelo,
                tipo_vehiculo_id,
                tipo_combustible_id,
                capacidad_combustible,
                kilometraje_inicial
            ) VALUES (?, ?, ?, ?, ?, ?, ?, ?)";

    $stmt = $conexion->prepare($sql);

    // ✅ CORREGIDO: orden correcto de tipos (ver explicación)
    $stmt->bind_param(
        "sissiidi",
        $placa,
        $ano_fabricacion,
        $marca,
        $modelo,
        $tipo_vehiculo_id,
        $tipo_combustible_id,
        $capacidad_combustible,
        $kilometraje_inicial
    );

    if ($stmt->execute()) {
        $id_nuevo = $conexion->insert_id;

        // ======= AUDITORÍA =======
        $id_usuario = $_SESSION['id_usuario'] ?? 0;
        $nombre_usuario = $_SESSION['usuario'] ?? 'sistema';
        $tipo_usuario = $_SESSION['rol'] ?? '';
        $descripcion = "Se registró un nuevo vehículo: $placa";
        registrarAuditoria(
            'vehiculos',
            'agregar',
            $descripcion,
            $id_usuario,
            $nombre_usuario,
            'vehiculos',
            $id_nuevo,
            $tipo_usuario
        );
        // =========================

        $_SESSION['vehiculoPlaca'] = $placa;
        header("Location: ../../Vista/Administrador/Adm_Gestion_Vehicular.php");
        exit();
    } else {
        $_SESSION['error_placa'] = "Error al registrar el vehículo. Intente nuevamente.";
        header("Location: ../../Vista/Administrador/Adm_Formulario_Flota.php");
        exit();
    }

} finally {
    if (isset($stmt)) {
        $stmt->close();
    }
    $conn->closeConnection();
}
?>
