<?php
declare(strict_types=1);

require_once __DIR__ . '/../config/helpers.php';

try {
    $pdo = db();
    $idMarca = (int) ($_GET['id_marca'] ?? 0);
    $incluirTodosModelos = (string) ($_GET['incluir_modelos'] ?? '') === '1';

    $marcas = $pdo->query(
        'SELECT id, nome
         FROM veiculo_marcas_catalogo
         WHERE ativo = 1
         ORDER BY nome ASC'
    )->fetchAll();

    $modelos = [];
    if ($idMarca > 0 || $incluirTodosModelos) {
        $sql = 'SELECT mo.id, mo.id_marca, mo.nome, mo.categoria_economica, mo.categoria_plus, mo.categoria_pro
                FROM veiculo_modelos_catalogo mo
                INNER JOIN veiculo_marcas_catalogo ma ON ma.id = mo.id_marca
                WHERE mo.ativo = 1
                  AND ma.ativo = 1';
        $params = [];
        if ($idMarca > 0) {
            $sql .= ' AND mo.id_marca = ?';
            $params[] = $idMarca;
        }
        $sql .= ' ORDER BY mo.nome ASC';

        $stmt = $pdo->prepare($sql);
        $stmt->execute($params);
        $modelos = $stmt->fetchAll();
    }

    $cores = $pdo->query(
        'SELECT id, nome
         FROM veiculo_cores_catalogo
         WHERE ativo = 1
         ORDER BY nome ASC'
    )->fetchAll();

    foreach ($marcas as &$marca) {
        $marca['id'] = (int) $marca['id'];
    }
    unset($marca);

    foreach ($modelos as &$modelo) {
        $modelo['id'] = (int) $modelo['id'];
        $modelo['id_marca'] = (int) $modelo['id_marca'];
        $modelo['categorias'] = [
            'economica' => (bool) $modelo['categoria_economica'],
            'plus' => (bool) $modelo['categoria_plus'],
            'pro' => (bool) $modelo['categoria_pro'],
        ];
        unset($modelo['categoria_economica'], $modelo['categoria_plus'], $modelo['categoria_pro']);
    }
    unset($modelo);

    foreach ($cores as &$cor) {
        $cor['id'] = (int) $cor['id'];
    }
    unset($cor);

    json_ok([
        'marcas' => $marcas,
        'modelos' => $modelos,
        'cores' => $cores,
    ]);
} catch (Throwable $e) {
    json_fail('Erro ao carregar catalogo de veiculos.', 500, ['error' => $e->getMessage()]);
}
