<?php
declare(strict_types=1);

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

$data = input_json();
$idCorrida = (int) ($data['id_corrida'] ?? 0);
$idMotorista = (int) ($data['id_motorista'] ?? 0);
$idParada = (int) ($data['id_parada'] ?? 0);

if ($idCorrida <= 0 || $idMotorista <= 0 || $idParada <= 0) {
    json_fail('Dados da parada nao informados.');
}

try {
    $pdo = db();
    if (!corrida_table_exists($pdo, 'corrida_paradas')) {
        json_fail('Paradas ainda nao estao disponiveis no banco.', 422);
    }

    $stmt = $pdo->prepare(
        'SELECT c.id, c.status, cp.id AS id_parada
         FROM corridas c
         INNER JOIN corrida_paradas cp ON cp.id_corrida = c.id
         WHERE c.id = ?
           AND c.id_motorista = ?
           AND c.status = "em_andamento"
           AND cp.id = ?
         LIMIT 1'
    );
    $stmt->execute([$idCorrida, $idMotorista, $idParada]);
    $row = $stmt->fetch();
    if (!$row) {
        json_fail('Parada nao encontrada para essa corrida.', 404);
    }

    $pdo->prepare(
        'UPDATE corrida_paradas
         SET confirmada_em = COALESCE(confirmada_em, NOW())
         WHERE id = ? AND id_corrida = ?'
    )->execute([$idParada, $idCorrida]);

    corrida_evento_registrar(
        $pdo,
        $idCorrida,
        'parada_confirmada',
        $idMotorista,
        'motorista',
        'em_andamento',
        'em_andamento',
        null,
        null,
        ['id_parada' => $idParada]
    );

    $corrida = corrida_formatar_para_motorista($pdo, $idCorrida, null);
    json_ok(['corrida' => $corrida]);
} catch (Throwable $e) {
    json_fail('Erro ao confirmar parada.', 500, ['error' => $e->getMessage()]);
}
