<?php
session_start();

// 1. Captura e limpa os dados recebidos via POST
$id_pedido = trim($_POST['id_pedido'] ?? '');
$nota = trim($_POST['nota'] ?? '');

// 2. Travas de segurança iniciais
if (empty($id_pedido)) {
    die("Erro: O sistema não recebeu o ID do pedido. Verifique o campo 'id_pedido' no formulário.");
}
if (empty($nota)) {
    die("Erro: O sistema não recebeu a NOTA da avaliação. Verifique o name='nota' nos botões.");
}

// 3. Define os caminhos absolutos (Busca na mesma pasta do script)
$arq_pedidos = __DIR__ . '/db_pedidos.json';
$arq_entregadores = __DIR__ . '/entregadores.json';

// Verificação de existência dos arquivos
if (!file_exists($arq_pedidos)) {
    die("Erro: O arquivo 'db_pedidos.json' não existe na pasta: " . __DIR__);
}
if (!file_exists($arq_entregadores)) {
    die("Erro: O arquivo 'entregadores.json' não existe na pasta: " . __DIR__);
}

// 4. Carrega e decodifica os dados
$pedidos = json_decode(file_get_contents($arq_pedidos), true) ?: [];
$entregadores = json_decode(file_get_contents($arq_entregadores), true) ?: [];

$cpf_do_pedido = "";
$valor_corrida = 10.00;

// 5. Localiza o pedido para identificar o entregador
foreach ($pedidos as $p) {
    if (strval($p['id'] ?? '') === strval($id_pedido)) {
        // Limpa o CPF (mantém apenas números)
        $cpf_do_pedido = preg_replace('/[^0-9]/', '', $p['entregador_id'] ?? '');
        $valor_corrida = (float)($p['valor'] ?? 10.00);
        break;
    }
}

if (empty($cpf_do_pedido)) {
    die("Erro: Não encontrei o entregador vinculado ao pedido: " . $id_pedido);
}

// 6. Localiza o entregador no banco e grava a avaliação
$sucesso = false;
foreach ($entregadores as &$e) {
    // Tenta ler o CPF de chaves comuns (usuario, cpf ou id)
    $identificador_banco = $e['usuario'] ?? $e['cpf'] ?? $e['id'] ?? '';
    $cpf_limpo_banco = preg_replace('/[^0-9]/', '', $identificador_banco);

    if ($cpf_limpo_banco === $cpf_do_pedido) {
        if ($nota === 'reclamacao') {
            $e['reclamacoes'] = (int)($e['reclamacoes'] ?? 0) + 1;
            // Bloqueio automático se atingir 2 reclamações
            if ($e['reclamacoes'] >= 2) {
                $e['status'] = 'bloqueado';
            }
        } else {
            // Atualiza estatísticas de estrelas
            $e['total_estrelas'] = (int)($e['total_estrelas'] ?? 0) + (int)$nota;
            $e['total_corridas'] = (int)($e['total_corridas'] ?? 0) + 1;
            
            // Calcula média (evita divisão por zero)
            $total_c = $e['total_corridas'] > 0 ? $e['total_corridas'] : 1;
            $e['media_estrelas'] = round($e['total_estrelas'] / $total_c, 1);
            
            // Cálculo de bônus baseado na média (Ex: Média 5.0 = 5% de bônus)
            $valor_bonus = $valor_corrida * ($e['media_estrelas'] / 100);
            
            $e['saldo'] = (float)($e['saldo'] ?? 0) + $valor_bonus;
            $e['bonus_acumulado'] = (float)($e['bonus_acumulado'] ?? 0) + $valor_bonus;
        }
        $sucesso = true;
        break;
    }
}

// 7. Salva as alterações e redireciona
if ($sucesso) {
    file_put_contents($arq_entregadores, json_encode($entregadores, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
    header("Location: index.php?status=avaliado");
} else {
    die("Erro: O CPF " . $cpf_do_pedido . " não foi encontrado dentro do arquivo entregadores.json.");
}
exit;