<?php
declare(strict_types=1);

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

$data = input_json();
$idMotorista = (int) ($data['id_motorista'] ?? $_POST['id_motorista'] ?? 0);
$idVeiculo = (int) ($data['id_veiculo'] ?? $_POST['id_veiculo'] ?? 0);

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

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

    if ($idVeiculo > 0) {
        $veiculoStmt = $pdo->prepare(
            'SELECT id, status
             FROM veiculos
             WHERE id = ? AND id_motorista = ?
             LIMIT 1'
        );
        $veiculoStmt->execute([$idVeiculo, $idMotorista]);
        $veiculo = $veiculoStmt->fetch();

        if (!$veiculo) {
            json_fail('Veiculo nao encontrado.', 404);
        }

        if (($veiculo['status'] ?? '') !== 'aprovado') {
            json_fail('Somente veiculos aprovados podem ficar em uso.');
        }
    }

    $up = $pdo->prepare(
        'UPDATE usuarios
         SET id_veiculo_ativo = ?
         WHERE id = ? AND tipo = "motorista"'
    );
    $up->execute([$idVeiculo > 0 ? $idVeiculo : null, $idMotorista]);

    json_ok([
        'id_veiculo_ativo' => $idVeiculo > 0 ? $idVeiculo : null,
        'tipo_convertido_motorista' => $promocao['foi_promovido'],
        'indicador_removido' => $promocao['indicador_removido'],
        'message' => $idVeiculo > 0 ? 'Veiculo definido como em uso.' : 'Veiculo ativo removido.',
    ]);
} catch (Throwable $e) {
    json_fail('Erro ao definir veiculo ativo.', 500, ['error' => $e->getMessage()]);
}
