<?php
session_start();
date_default_timezone_set('America/Sao_Paulo');

$pedidos_file = 'db/pedidos.json'; 
$file_usuarios = 'usuarios.json';

if (!file_exists($pedidos_file)) {
    file_put_contents($pedidos_file, json_encode([]));
}
$pedidos = json_decode(file_get_contents($pedidos_file), true) ?? [];

// --- 1. LÓGICA DE SOMA DE SALDO INDIVIDUAL (PARA O ENTREGADOR) ---
// CORREÇÃO: Esta variável deve somar apenas o que for do CPF logado
$meu_cpf_logado = $_SESSION['usuario_cpf'] ?? null; 
$saldo_total_entregador = 0;

if ($meu_cpf_logado) {
    foreach ($pedidos as $p) {
        // Verifica se o entregador_id no JSON bate com o CPF da sessão
        // E se o status é o de viagem finalizada
        if (isset($p['entregador_id']) && $p['entregador_id'] == $meu_cpf_logado && $p['status'] == "Viagem Concluída") {
            $saldo_total_entregador += (float)$p['valor'];
        }
    }
}

// --- 2. LOGICA DA TRAVA DO CLIENTE ---
$status_liberados = ["Viagem Concluída", "Cancelado", "Cancelado pelo Cliente", "Recebido", "Concluído", "pendente_pagamento"];
$travado = false;
$id_em_aberto = "";
$meu_id_sessao = $_SESSION['usuario_id'] ?? $_SESSION['cliente_id'] ?? null;

if ($meu_id_sessao) {
    foreach ($pedidos as $p) {
        $st_limpo = isset($p['status']) ? trim(str_replace('.', '', $p['status'])) : "";
        $id_no_pedido = $p['cliente_id'] ?? $p['usuario_id'] ?? null;

        if ($id_no_pedido == $meu_id_sessao && !in_array($st_limpo, $status_liberados)) {
            $travado = true;
            $id_em_aberto = $p['id'];
            break;
        }
    }
}

if ($travado && $_SERVER['REQUEST_METHOD'] !== 'POST') {
    // Redireciona ou bloqueia se já tiver pedido ativo
}

// --- 3. PROCESSAMENTO DO FORMULÁRIO ---
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['solicitar_corrida'])) {
    if ($travado) { die("Erro: Você já tem um pedido ativo!"); }

    $usuarios = json_decode(file_get_contents($file_usuarios), true) ?: [];
    $valor_corrida = (float)$_POST['valor_total'];
    $usuario_id = $_SESSION['usuario_id'];
    $sucesso_debito = false;

    foreach ($usuarios as &$u) {
        if ($u['id'] == $usuario_id) {
            if ($u['saldo'] >= $valor_corrida) {
                $u['saldo'] -= $valor_corrida;
                $sucesso_debito = true;
                break;
            } else {
                die("Erro: Saldo insuficiente!");
            }
        }
    }

    if ($sucesso_debito) {
        file_put_contents($file_usuarios, json_encode($usuarios, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
        
        $id_pedido = "BRT" . rand(1000, 9999);
        $produto = $_POST['produto'] ?? 'Corrida';
        $estacao = $_POST['estacao_brt'] ?? 'Não informada';

       // Novo Pedido (Criado pelo Cliente)
$novo_pedido = [
    "id"              => $id_pedido,
    "cliente_id"      => $usuario_id,
    "produto"         => $produto,
    "estacao"         => $estacao,
    "status"          => "Pendente", 
    "data"            => date("d/m/Y H:i"),
    "valor"           => $valor_corrida,
    "entregador_id"   => "OFFLINE",  // Texto fixo indicando que não tem dono ainda
    "entregador_nome" => "Nenhum"    // Nome fixo
];

        $pedidos[] = $novo_pedido;
        file_put_contents($pedidos_file, json_encode($pedidos, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));

        header("Location: rastreio.php?id=" . $id_pedido);
        exit;
    }
}





session_start();
$pedidos_file = 'db/pedidos.json';

// Pega o ID da corrida que o entregador clicou
$id_corrida_aceita = $_GET['aceitar_id'] ?? $_POST['id'];

// IMPORTANTE: Aqui pegamos o CPF do entregador que está logado
$cpf_do_entregador = $_SESSION['usuario_cpf']; 
$nome_do_entregador = $_SESSION['usuario_nome'];

$pedidos = json_decode(file_get_contents($pedidos_file), true);

foreach ($pedidos as &$p) {
    if ($p['id'] == $id_corrida_aceita) {
        
        // SÓ TROCA SE ESTIVER OFFLINE (Para um não roubar a corrida do outro)
        if ($p['entregador_id'] == "OFFLINE") {
            $p['entregador_id'] = $cpf_do_entregador; // <--- AQUI ELE DEIXA DE SER TODOS E VIRA SÓ DE UM
            $p['entregador_nome'] = $nome_do_entregador;
            $p['status'] = "Entregador a caminho";
        }
        break;
    }
}

file_put_contents($pedidos_file, json_encode($pedidos, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));


?>





<?php
// 1. Dados que o cliente acabou de preencher no formulário
$ponto_retirada_novo = $_POST['ponto_retirada'] ?? '';
$ponto_entrega_novo = $_POST['ponto_entrega'] ?? '';
$cliente_id_atual = $_POST['cliente_id'] ?? ''; // Ou pegue da $_SESSION

// 2. Carrega os pedidos existentes
$arquivo_pedidos = 'db_pedidos.json';
$pedidos = json_decode(file_get_contents($arquivo_pedidos), true);

$duplicado = false;

if ($pedidos) {
    foreach ($pedidos as $p) {
        // Verifica se:
        // - É o mesmo cliente
        // - Mesma retirada E mesma entrega
        // - E o status NÃO é "Concluído" nem "Cancelado"
        if (
            $p['cliente_id'] === $cliente_id_atual &&
            $p['ponto_retirada'] === $ponto_retirada_novo &&
            $p['ponto_entrega'] === $ponto_entrega_novo &&
            ($p['status'] !== 'Viagem Concluída' && $p['status'] !== 'Cancelado')
        ) {
            $duplicado = true;
            break;
        }
    }
}

// 3. Se for duplicado, barra o pedido
if ($duplicado) {
    header("Location: index.php?erro=duplicado");
    exit;
}

// ... segue o código normal de gravação se não for duplicado ...
?>









<?php
// 1. Recebe os dados do formulário
$retirada_nova = trim($_POST['ponto_retirada'] ?? '');
$entrega_nova = trim($_POST['ponto_entrega'] ?? '');
$meu_id = $_SESSION['usuario_id'] ?? '';

// 2. Carrega os pedidos atuais para conferir
$arquivo_pedidos = 'db_pedidos.json';
$pedidos_existentes = file_exists($arquivo_pedidos) ? json_decode(file_get_contents($arquivo_pedidos), true) : [];

// 3. Status que indicam que uma corrida ainda está "viva"
$status_ativos = ["procurando entregador", "em andamento", "entregador a caminho", "aguardando"];

foreach ($pedidos_existentes as $p) {
    // Verifica se é o mesmo cliente
    if ($p['cliente_id'] == $meu_id) {
        
        $status_atual = mb_strtolower(trim($p['status'] ?? ''));
        
        // Se a retirada E a entrega forem iguais E o pedido não acabou
        if (
            trim($p['ponto_retirada']) === $retirada_nova && 
            trim($p['ponto_entrega']) === $entrega_nova &&
            in_array($status_atual, $status_ativos)
        ) {
            // BLOQUEIA: Redireciona com erro de duplicidade
            header("Location: index.php?erro=duplicado");
            exit;
        }
    }
}

// ... se passar daqui, o código segue para gravar o pedido normalmente ...
?>

<?php
$retirada = trim($_POST['ponto_retirada'] ?? '');
$entrega = trim($_POST['ponto_entrega'] ?? '');

// 1. Verifica se algum campo está vazio
if (empty($retirada) || empty($entrega)) {
    header("Location: index.php?erro=campos_vazios");
    exit;
}

// 2. Verifica se são iguais (Alvorada -> Alvorada)
if ($retirada === $entrega) {
    header("Location: index.php?erro=mesmo_ponto");
    exit;
}

// Se passar por essas duas travas, ele grava no JSON...
?>





