<?php
declare(strict_types=1);

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

$idMotorista = (int) ($_GET['id_motorista'] ?? 0);
if ($idMotorista <= 0) {
    $data = input_json();
    $idMotorista = (int) ($data['id_motorista'] ?? 0);
}

if ($idMotorista <= 0) {
    json_fail('Motorista nao informado.');
}

try {
    $pdo = db();
    $promocao = usuario_garantir_motorista($idMotorista, $pdo);

    $ativoStmt = $pdo->prepare(
        'SELECT id_veiculo_ativo
         FROM usuarios
         WHERE id = ? AND tipo = "motorista"
         LIMIT 1'
    );
    $ativoStmt->execute([$idMotorista]);
    $idVeiculoAtivo = (int) ($ativoStmt->fetchColumn() ?: 0);

    $stmt = $pdo->prepare(
        'SELECT id, id_motorista, id_marca_catalogo, id_modelo_catalogo, id_cor_catalogo, marca, modelo, ano_fabricacao, ano_modelo, cor, placa, documento_url, status, observacao_revisao, documento_vencimento, aprovado_por, aprovado_em, criado_em, atualizado_em
         FROM veiculos
         WHERE id_motorista = ?
         ORDER BY (id = ?) DESC, criado_em DESC, id DESC'
    );
    $stmt->execute([$idMotorista, $idVeiculoAtivo]);
    $veiculos = $stmt->fetchAll();

    foreach ($veiculos as &$veiculo) {
        $veiculo['id'] = (int) $veiculo['id'];
        $veiculo['id_motorista'] = (int) $veiculo['id_motorista'];
        $veiculo['id_marca_catalogo'] = $veiculo['id_marca_catalogo'] === null ? null : (int) $veiculo['id_marca_catalogo'];
        $veiculo['id_modelo_catalogo'] = $veiculo['id_modelo_catalogo'] === null ? null : (int) $veiculo['id_modelo_catalogo'];
        $veiculo['id_cor_catalogo'] = $veiculo['id_cor_catalogo'] === null ? null : (int) $veiculo['id_cor_catalogo'];
        $veiculo['ano_fabricacao'] = $veiculo['ano_fabricacao'] === null ? null : (int) $veiculo['ano_fabricacao'];
        $veiculo['ano_modelo'] = $veiculo['ano_modelo'] === null ? null : (int) $veiculo['ano_modelo'];
        $veiculo['ativo'] = (int) $veiculo['id'] === $idVeiculoAtivo;
    }

    json_ok([
        'id_veiculo_ativo' => $idVeiculoAtivo > 0 ? $idVeiculoAtivo : null,
        'tipo_convertido_motorista' => $promocao['foi_promovido'],
        'indicador_removido' => $promocao['indicador_removido'],
        'veiculos' => $veiculos,
    ]);
} catch (Throwable $e) {
    json_fail('Erro ao listar veiculos.', 500, ['error' => $e->getMessage()]);
}
