<?php
declare(strict_types=1);

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

$data = input_json();
require_fields($data, ['id_corrida', 'id_passageiro', 'avaliacao_motorista']);

$idCorrida = (int) $data['id_corrida'];
$idPassageiro = (int) $data['id_passageiro'];
$avaliacao = (int) $data['avaliacao_motorista'];

if ($avaliacao < 1 || $avaliacao > 5) {
    json_fail('Avaliacao invalida.');
}

try {
    $stmt = db()->prepare(
        'SELECT id, id_passageiro, status, id_motorista
         FROM corridas
         WHERE id = ? LIMIT 1'
    );
    $stmt->execute([$idCorrida]);
    $corrida = $stmt->fetch();

    if (!$corrida) {
        json_fail('Corrida nao encontrada.', 404);
    }

    if ((int) $corrida['id_passageiro'] !== $idPassageiro) {
        json_fail('Corrida nao pertence ao passageiro.', 403);
    }

    if (($corrida['status'] ?? '') !== 'finalizada' || empty($corrida['id_motorista'])) {
        json_fail('Corrida nao esta finalizada ou nao tem motorista.');
    }

    $up = db()->prepare(
        'UPDATE corridas
         SET avaliacao_motorista = ?, avaliado_em = NOW()
         WHERE id = ?'
    );
    $up->execute([$avaliacao, $idCorrida]);

    json_ok();
} catch (Throwable $e) {
    json_fail('Erro ao salvar avaliacao.', 500, ['error' => $e->getMessage()]);
}
