<?php







// --- LÓGICA DE AVALIAÇÕES ---
$arquivo_avaliacoes = 'avaliacoes.json';

// Processar a nota enviada
if (isset($_POST['avaliar_entregador'])) {
    $id_entregador = $_POST['entregador_id'];
    $nota = intval($_POST['nota']);
    
    $avaliacoes = file_exists($arquivo_avaliacoes) ? json_decode(file_get_contents($arquivo_avaliacoes), true) : [];
    
    // Adiciona a nova nota
    if (!isset($avaliacoes[$id_entregador])) {
        $avaliacoes[$id_entregador] = ['total_notas' => 0, 'soma_notas' => 0, 'media' => 0];
    }
    
    $avaliacoes[$id_entregador]['total_notas'] += 1;
    $avaliacoes[$id_entregador]['soma_notas'] += $nota;
    $avaliacoes[$id_entregador]['media'] = round($avaliacoes[$id_entregador]['soma_notas'] / $avaliacoes[$id_entregador]['total_notas'], 1);
    
    file_put_contents($arquivo_avaliacoes, json_encode($avaliacoes));
    header("Location: index.php?sucesso=1"); // Volta para a tela do cliente
    exit;
}

// Pegar a média para exibir no perfil do entregador
$avaliacoes_db = file_exists($arquivo_avaliacoes) ? json_decode(file_get_contents($arquivo_avaliacoes), true) : [];
$minha_media = $avaliacoes_db[$meu_id]['media'] ?? "5.0";
$meus_votos = $avaliacoes_db[$meu_id]['total_notas'] ?? "0";































// --- VERIFICAÇÃO AUTOMÁTICA DE STATUS (AJAX) ---
if (isset($_GET['verificar_status_ajax'])) {
    header("Content-Type: text/plain");
    header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
    
    $id_busca = (string)$_GET['id_pedido'];
    $pedidos_db = file_exists($arquivo_pedidos) ? json_decode(file_get_contents($arquivo_pedidos), true) : [];
    
    foreach ($pedidos_db as $p_check) {
        if ((string)$p_check['id'] === $id_busca) {
            echo mb_strtolower(trim($p_check['status']));
            exit;
        }
    }
    echo "not_found";
    exit;
}





// --- ENDPOINT PARA VERIFICAÇÃO INSTANTÂNEA ---
if (isset($_GET['check_finalizado'])) {
    $id_p = (string)$_GET['id_pedido'];
    $pedidos_temp = json_decode(file_get_contents($arquivo_pedidos), true) ?: [];
    foreach ($pedidos_temp as $pt) {
        if ((string)$pt['id'] === $id_p) {
            // Retorna 'true' se o status for finalizado, concluído ou recebido
            $st = mb_strtolower(trim($pt['status']));
            if (in_array($st, ["finalizado", "concluído", "recebido"])) {
                echo "finalizou";
                exit;
            }
        }
    }
    echo "em_curso";
    exit;
}

// Endpoint para verificar status SEM CACHE
if (isset($_GET['verificar_status'])) {
    header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
    $id_p = (string)$_GET['id_pedido'];
    // Forçamos a leitura fresca do arquivo
    $pedidos_temp = json_decode(file_get_contents($arquivo_pedidos), true) ?: [];
    foreach ($pedidos_temp as $pt) {
        if ((string)$pt['id'] === $id_p) {
            echo trim(mb_strtolower($pt['status'])); 
            exit;
        }
    }
    echo "not_found"; exit;
}















if (session_status() === PHP_SESSION_NONE) { session_start(); }

// --- CONFIGURAÇÕES E ARQUIVOS ---
date_default_timezone_set('America/Sao_Paulo');
$arquivo_pedidos = 'db_pedidos.json';
$arquivo_chat = 'mensagens_chat.json'; 
$arquivo_saques = 'saques.json'; // Padronizado para alinhar com o Master
$arquivo_creditos = 'creditos.json';

function buscarDadosUsuario($id) {
    $arquivo = 'usuarios.json';
    if (!file_exists($arquivo)) return null;
    $usuarios = json_decode(file_get_contents($arquivo), true);
    if (is_array($usuarios)) {
        foreach ($usuarios as $u) {
            if (trim((string)($u['cpf'] ?? '')) === trim((string)$id)) return $u;
        }
    }
    return null;
}

function buscarSaldoReal($id) {
    global $arquivo_creditos;
    if (!file_exists($arquivo_creditos)) return 0.00;
    $creditos = json_decode(file_get_contents($arquivo_creditos), true);
    return floatval($creditos[trim((string)$id)] ?? 0.00);
}

// Lógica do Botão de Saque (Corrigida para não resetar ao atualizar)
function obterStatusBotaoSaque($id) {
    global $arquivo_saques;
    
    if (!file_exists($arquivo_saques)) {
        return ['cor' => 'bg-green-600', 'texto' => 'Sacar Pix', 'icon' => 'fa-wallet', 'status' => 'disponivel'];
    }
    
    $saques = json_decode(file_get_contents($arquivo_saques), true);
    
    if (is_array($saques)) {
        // Busca se existe algum saque deste entregador com status pendente
        foreach ($saques as $s) {
            if (trim((string)($s['entregador_id'] ?? '')) === trim((string)$id)) {
                $status = mb_strtolower($s['status'] ?? '');
                if ($status === 'pendente' || $status === 'aguardando') {
                    return [
                        'cor' => 'bg-orange-500', 
                        'texto' => 'Aguardando', 
                        'icon' => 'fa-clock animate-pulse', 
                        'status' => 'pendente'
                    ];
                }
            }
        }
    }
    
    return ['cor' => 'bg-green-600', 'texto' => 'Sacar Pix', 'icon' => 'fa-wallet', 'status' => 'disponivel'];
}




// --- ENDPOINT PARA VERIFICAÇÃO RÁPIDA (AJAX) ---
if (isset($_GET['check_updates'])) {
    header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
    $id_ativo = $_GET['id_pedido_ativo'] ?? '';
    $pedidos_frescos = json_decode(file_get_contents($arquivo_pedidos), true) ?: [];
    
    $status_atual = "";
    $count_radar = 0;

    foreach ($pedidos_frescos as $p) {
        // 1. Verifica status do pedido que o entregador está fazendo
        if ($id_ativo !== "" && (string)$p['id'] === (string)$id_ativo) {
            $status_atual = mb_strtolower(trim($p['status']));
        }
        // 2. Conta quantos pedidos estão disponíveis no radar
        if (empty($p['entregador_id']) && in_array(mb_strtolower(trim($p['status'])), ["pendente", "procurando entregador..."])) {
            $count_radar++;
        }
    }

    echo json_encode([
        'status_ativo' => $status_atual,
        'total_radar' => $count_radar
    ]);
    exit;
}





















// --- AJAX: CHAT ---
if (isset($_GET['enviar_msg'])) {
    $id_p = $_POST['id_pedido'];
    $texto = $_POST['texto'];
    $nome = $_SESSION['usuario_nome'];
    $mensagens = file_exists($arquivo_chat) ? json_decode(file_get_contents($arquivo_chat), true) : [];
    $mensagens[] = ['id_pedido' => (string)$id_p, 'nome' => $nome, 'texto' => $texto, 'hora' => date('H:i')];
    file_put_contents($arquivo_chat, json_encode($mensagens));
    echo "ok"; exit;
}

if (isset($_GET['carregar_chat'])) {
    $id_p = (string)$_GET['id_pedido'];
    $mensagens = file_exists($arquivo_chat) ? json_decode(file_get_contents($arquivo_chat), true) : [];
    $filtradas = array_filter($mensagens, function($m) use ($id_p) { return (string)$m['id_pedido'] === $id_p; });
    echo json_encode(array_values($filtradas)); exit;
}

if (!isset($_SESSION['usuario_nome'])) { header("Location: login2.php"); exit; }

$meu_id = (string)($_SESSION['usuario_id'] ?? $_SESSION['usuario_cpf'] ?? '');
$pedidos = file_exists($arquivo_pedidos) ? json_decode(file_get_contents($arquivo_pedidos), true) : [];

// --- LÓGICA DE TRAVA: VERIFICAR SE JÁ EXISTE CORRIDA EM CURSO ---
$possui_corrida_em_curso = false;
$status_finais = ["finalizado", "concluído", "recebido", "cancelado"];

foreach ($pedidos as $p) {
    $ent_id_p = trim((string)($p['entregador_id'] ?? ''));
    if ($ent_id_p === $meu_id) {
        if (!in_array(mb_strtolower(trim($p['status'])), $status_finais)) {
            $possui_corrida_em_curso = true;
            break;
        }
    }
}

// --- ACEITE E CANCELAMENTO ---
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['id_pedido'])) {
    
    // Trava de segurança no aceite
    if ($possui_corrida_em_curso && ($_POST['novo_status'] ?? '') != 'cancelar') {
        echo "<script>alert('Você já possui uma corrida em curso! Finalize-a para aceitar outra.'); window.location.href='admin.php';</script>";
        exit;
    }

    $id_alvo = trim((string)$_POST['id_pedido']);
    $novo_st = $_POST['novo_status'] ?? '';
    $alterou = false;

    foreach ($pedidos as &$p) {
        if (trim((string)$p['id']) === $id_alvo) {
            if ($novo_st == 'cancelar') {
                $p['status'] = "Procurando Entregador...";
                $p['entregador_id'] = "";
                $p['entregador_nome'] = "";
            } else {
                $p['status'] = "Em trânsito";
                $p['entregador_id'] = $meu_id;
                $p['entregador_nome'] = $_SESSION['usuario_nome'];
                $p['valor_entregador'] = 5.00; 
                if (empty($p['codigo_entrega'])) { $p['codigo_entrega'] = (string)rand(1000, 9999); }
            }
            $alterou = true; break;
        }
    }
    if ($alterou) { file_put_contents($arquivo_pedidos, json_encode(array_values($pedidos), JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE)); }
    header("Location: admin.php"); exit;
}

// Filtros para exibição
$pedido_em_foco = null;
$corridas_disponiveis = [];
$total_entregas_feitas = 0;

foreach ($pedidos as $p) {
    $ent_id_p = trim((string)($p['entregador_id'] ?? ''));
    if ($ent_id_p === $meu_id) {
        if (in_array(mb_strtolower(trim($p['status'])), ["finalizado", "concluído", "recebido"])) { $total_entregas_feitas++; }
        else { $pedido_em_foco = $p; }
    } elseif (empty($ent_id_p) && in_array(mb_strtolower(trim($p['status'])), ["pendente", "procurando entregador..."])) {
        $corridas_disponiveis[] = $p;
    }
}

$dados_vivos = buscarDadosUsuario($meu_id);
$foto_perfil = $dados_vivos['foto'] ?? '';
$saldo_total = buscarSaldoReal($meu_id);
$btn = obterStatusBotaoSaque($meu_id);
?>

<div id="conteudo-principal">
    


<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <script src="https://cdn.tailwindcss.com"></script>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
    <title>BRT Express | Painel</title>
    <script>tailwind.config = { theme: { extend: { colors: { '99': '#FFD100' } } } }</script>
    <style>
        @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;700;900&display=swap');
        body { font-family: 'Inter', sans-serif; background-color: #f3f4f6; }
    </style>
<style>
    /* Esconde o conteúdo principal enquanto o GPS não é validado */
    #conteudo-principal { display: none; }
</style>


<?php 
    // Se o entregador está com uma corrida ativa, a página vai recarregar a cada 5 segundos
    // para verificar se o cliente finalizou no banco de dados.
    if ($pedido_em_foco): ?>
        <meta http-equiv="refresh" content="60">
    <?php else: ?>
        <meta http-equiv="refresh" content="60">
    <?php endif; ?>













</head>

<!-- Tela de Bloqueio -->
<div id="bloqueio-gps" class="fixed inset-0 bg-black z-[999] flex flex-col items-center justify-center p-6 text-center">
    <div class="bg-gray-900 p-8 rounded-[2.5rem] border border-[#FFD100] shadow-2xl">
        <i class="fas fa-location-dot text-[#FFD100] text-5xl animate-bounce mb-4"></i>
        <h2 class="text-white text-xl font-bold uppercase italic">GPS Necessário</h2>
        <p class="text-gray-400 text-sm mt-2 mb-6">
            Para trabalhar na <b>BRT Entregas</b>, sua localização deve estar ativada e permitida no navegador.
        </p>
        <button onclick="verificarGPS()" class="bg-[#FFD100] text-black font-black py-3 px-8 rounded-full uppercase italic text-sm">
            Ativar Localização
        </button>
    </div>
</div>




















<body class="pb-10">

    <nav class="bg-black px-9 py-4 flex justify-between items-center shadow-lg sticky top-0 z-50">
        <img src="logooficial.jpeg" alt="Logo" class="h-12 w-auto">
        <a href="login2.php?logout=1" class="text-white flex items-center gap-2 font-bold text-xs uppercase">
            Sair <i class="fas fa-sign-out-alt text-lg"></i>
        </a>
    </nav>

    <div class="max-w-md mx-auto px-4 mt-2">

        <div class="bg-black text-white p-6 rounded-[2.5rem] mb-6 border-b-4 border-99 shadow-xl">
            <div class="flex items-center justify-between mb-6">
                <div class="flex items-center gap-3">
                    <div class="w-12 h-12 rounded-xl border-2 border-99 overflow-hidden bg-gray-800">
                        <?php if ($foto_perfil): ?> <img src="<?php echo $foto_perfil; ?>" class="w-full h-full object-cover">
                        <?php else: ?> <div class="w-full h-full flex items-center justify-center text-99 font-black text-lg"><?php echo substr($_SESSION['usuario_nome'], 0, 1); ?></div> <?php endif; ?>
                    </div>
                    <div>
                        
                        
                        <div>
    <p class="text-[10px] font-bold text-99 uppercase italic">Entregador</p>
    <h2 class="text-sm font-black uppercase italic leading-none"><?php echo $_SESSION['usuario_nome']; ?></h2>
    <div class="flex items-center gap-1 mt-1">
        <i class="fas fa-star text-99 text-[8px]"></i>
        <span class="text-[9px] font-bold text-white"><?php echo $minha_media; ?></span>
        <span class="text-[8px] text-gray-500">(<?php echo $meus_votos; ?>)</span>
    </div>
</div>
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                    </div>
                </div>

                <button id="btnSaque" onclick="solicitarSaque()" class="<?php echo $btn['cor']; ?> text-white px-4 py-2 rounded-xl font-black text-[10px] uppercase shadow-lg transition-all">
                    <span id="txtSaque"><?php echo $btn['texto']; ?></span> <i id="iconSaque" class="fas <?php echo $btn['icon']; ?> ml-1"></i>
                </button>
            </div>
            
            <div class="flex justify-between items-end border-t border-white/10 pt-4">
                <div>
                    <p class="text-[10px] text-gray-400 uppercase font-bold">Saldo</p>
                    <h2 class="text-3xl font-black italic">R$ <?php echo number_format($saldo_total, 2, ',', '.'); ?></h2>
                </div>
                <div class="text-right">
                    <p class="text-[10px] text-gray-400 uppercase font-bold">Concluídas</p>
                    <h2 class="text-3xl font-black italic text-99"><?php echo $total_entregas_feitas; ?></h2>
                </div>
            </div>
        </div>

        <script>
        function solicitarSaque() {
            const btn = document.getElementById('btnSaque');
            const txt = document.getElementById('txtSaque');
            const icon = document.getElementById('iconSaque');
            const saldo = <?php echo $saldo_total; ?>;

            if (saldo <= 0) {
                alert("Você não possui saldo para sacar.");
                return;
            }

            if (btn.classList.contains('bg-orange-500')) {
                alert("Você já tem um saque em processamento.");
                return;
            }

            if (confirm("Deseja solicitar o saque do seu saldo via PIX (CPF)?")) {
                fetch('saque.php', { method: 'POST' })
                .then(response => {
                    btn.classList.remove('bg-green-600');
                    btn.classList.add('bg-orange-500');
                    txt.innerText = "Aguardando";
                    icon.className = "fas fa-clock ml-1 animate-pulse";
                    alert("Solicitado com sucesso!");
                    location.reload(); 
                })
                .catch(err => alert("Erro ao processar. Tente novamente."));
            }
        }
        </script>

        <?php if ($pedido_em_foco): ?>
            <div class="bg-white rounded-[2.5rem] shadow-xl overflow-hidden mb-8 border-2 border-99">
                <div class="bg-99 p-4 flex justify-between items-center px-6 text-black">
                    <p class="text-xs font-black uppercase italic">Corrida Ativa</p>
                    <span class="text-[12px] font-black bg-black text-99 px-4 py-1 rounded-full italic">R$ 5,00</span>
                </div>
                
                <div class="p-6">
                    <div class="bg-white rounded-3xl p-4 border border-slate-100 shadow-sm mb-6">
                        <div id="box-chat" class="h-40 overflow-y-auto mb-4 space-y-3 p-2 bg-slate-50 rounded-2xl text-[11px] flex flex-col"></div>
                        <div class="flex gap-2">
                            <input type="text" id="input-chat" class="flex-1 p-3 rounded-xl text-xs outline-none bg-slate-50 border border-slate-200" placeholder="Falar com cliente...">
                            <button onclick="enviarMsg()" class="bg-99 text-black px-4 rounded-xl shadow-md"><i class="fas fa-paper-plane"></i></button>
                        </div>
                    </div>

                    <div class="mb-6 space-y-3">
                        <div class="p-4 bg-gray-50 rounded-2xl border-l-4 border-blue-500">
                            <p class="text-[10px] font-bold text-gray-400 uppercase italic mb-1">Solicitante:</p>
                            <p class="text-md font-black text-black uppercase italic"><?php echo $pedido_em_foco['cliente_nome'] ?? 'Cliente'; ?></p>
                        </div>
                        <div class="p-4 bg-gray-50 rounded-2xl border-l-4 border-99">
                            <p class="text-[10px] font-bold text-gray-400 uppercase italic mb-1">O que levar:</p>
                            <p class="text-md font-black text-black uppercase italic"><?php echo $pedido_em_foco['item'] ?? 'Carga'; ?></p>
                        </div>
                    </div>

                    <div class="text-center mb-6 bg-gray-50 py-4 rounded-3xl border-2 border-dashed border-gray-200">
                        <p class="text-[10px] font-bold text-gray-400 uppercase italic">Código de Finalização</p>
                        <h2 class="text-4xl font-black italic text-black tracking-widest"><?php echo $pedido_em_foco['codigo_entrega']; ?></h2>
                    </div>

                    <div class="space-y-4 mb-8">
                        <div class="flex items-start gap-3"><i class="fas fa-map-marker-alt text-blue-500 mt-1"></i><p class="text-sm font-black uppercase italic"><?php echo $pedido_em_foco['ponto_retirada']; ?></p></div>
                        <div class="flex items-start gap-3"><i class="fas fa-flag-checkered text-green-500 mt-1"></i><p class="text-sm font-black uppercase italic text-green-600"><?php echo $pedido_em_foco['ponto_entrega']; ?></p></div>
                    </div>

                    <form method="POST">
                        <input type="hidden" name="id_pedido" value="<?php echo $pedido_em_foco['id']; ?>">
                        <button name="novo_status" value="cancelar" class="w-full py-4 text-red-500 font-black text-[10px] uppercase border-2 border-red-50 rounded-2xl">Abandonar Corrida</button>
                    </form>
                </div>
            </div>

            <script>
                function carregarMensagens() {
                    fetch(`admin.php?carregar_chat=1&id_pedido=<?php echo $pedido_em_foco['id']; ?>`)
                    .then(r => r.json()).then(msgs => {
                        const box = document.getElementById('box-chat');
                        box.innerHTML = msgs.map(m => `
                            <div class="flex flex-col ${m.nome === '<?php echo $_SESSION['usuario_nome']; ?>' ? 'items-end' : 'items-start'} w-full">
                                <div class="${m.nome === '<?php echo $_SESSION['usuario_nome']; ?>' ? 'bg-99 text-black' : 'bg-white shadow-sm'} p-2 px-3 rounded-xl max-w-[85%] font-bold">
                                    ${m.texto}
                                </div>
                            </div>
                        `).join('');
                        box.scrollTop = box.scrollHeight;
                    });
                }
                function enviarMsg() {
                    const inp = document.getElementById('input-chat'); if(!inp.value) return;
                    const fd = new FormData(); fd.append('id_pedido', '<?php echo $pedido_em_foco['id']; ?>'); fd.append('texto', inp.value);
                    fetch('admin.php?enviar_msg=1', {method:'POST', body:fd}).then(() => { inp.value=''; carregarMensagens(); });
                }
                setInterval(carregarMensagens, 3000); carregarMensagens();
            </script>
        <?php endif; ?>

  <h3 class="text-xs font-black uppercase text-gray-500 mb-4 flex items-center justify-between gap-2 italic">
    <span class="flex items-center gap-2">
        <i class="fas fa-bullseye text-red-500 animate-pulse"></i> Radar de Entregas
    </span>
</h3>

<div class="space-y-4">
    <?php foreach (array_reverse($corridas_disponiveis) as $p): ?>
        <div id="corrida-<?php echo $p['id']; ?>" class="bg-white rounded-[2rem] p-6 shadow-sm border border-gray-100 relative overflow-hidden transition-all">
            
            <button onclick="document.getElementById('corrida-<?php echo $p['id']; ?>').style.display='none'" class="absolute top-2 right-2 z-10 w-8 h-8 bg-gray-50 text-gray-400 hover:text-red-500 rounded-full flex items-center justify-center transition-all shadow-sm">
                <i class="fas fa-times text-xs"></i>
            </button>

            <div class="absolute top-0 left-0 bg-99 px-4 py-2 rounded-br-2xl font-black text-[9px]">
                <?php echo $p['data'] ?? date('d/m'); ?> - <?php echo $p['hora'] ?? date('H:i'); ?>
            </div>
            
            <div class="mb-4 mt-6">
                <p class="text-[10px] font-bold text-gray-400 uppercase">Solicitante: <span class="text-black"><?php echo $p['cliente_nome'] ?? 'Cliente'; ?></span></p>
                <p class="text-[10px] font-bold text-gray-400 uppercase mt-1">Item: <span class="text-99 bg-black px-2 py-0.5 rounded italic"><?php echo $p['item'] ?? 'Carga'; ?></span></p>
                <p class="text-sm font-black text-green-600 italic uppercase mt-2">Você recebe: R$ 5,00</p>
            </div>

            <div class="bg-gray-50 p-4 rounded-2xl mb-4 space-y-4">
                <div class="flex items-start gap-2">
                    <i class="fas fa-map-marker-alt text-blue-500 mt-1"></i>
                    <span class="text-[13px] font-black uppercase italic"><?php echo $p['ponto_retirada']; ?></span>
                </div>
                <div class="flex items-start gap-2">
                    <i class="fas fa-flag-checkered text-green-500 mt-1"></i>
                    <span class="text-[13px] font-black uppercase italic"><?php echo $p['ponto_entrega']; ?></span>
                </div>
            </div>

            <?php if ($possui_corrida_em_curso): ?>
                <div class="w-full bg-gray-100 py-4 rounded-2xl font-black uppercase italic text-[10px] text-gray-400 text-center border border-dashed border-gray-300">
                    <i class="fas fa-lock mr-1"></i> Finalize a corrida atual
                </div>
            <?php else: ?>
                <form method="POST">
                    <input type="hidden" name="id_pedido" value="<?php echo $p['id']; ?>">
                    <button class="w-full bg-99 py-4 rounded-2xl font-black uppercase italic text-sm shadow-lg active:scale-95 transition-all">
                        Aceitar Corrida
                    </button>
                </form>
            <?php endif; ?>
        </div>
    <?php endforeach; ?>
</div>
    </div>



<script>
    function verificarStatusCorrida() {
        fetch(`admin.php?verificar_status=1&id_pedido=<?php echo $pedido_em_foco['id']; ?>`)
        .then(r => r.text())
        .then(status => {
            const statusFinais = ["finalizado", "concluído", "recebido"];
            // Converte para minúsculo para garantir a comparação
            if (statusFinais.includes(status.toLowerCase().trim())) {
                // Se o status mudou para finalizado, recarrega para liberar o radar
                window.location.reload();
            }
        });
    }

    // Verifica a cada 3 segundos (3000ms)
    setInterval(verificarStatusCorrida, 3000);
</script>







<script>
// Variáveis de controle
let totalCorridasAtual = <?php echo count($corridas_disponiveis); ?>;
let repeticoesRestantes = 0;
const idPedidoAtivo = "<?php echo $pedido_em_foco ? $pedido_em_foco['id'] : ''; ?>";

function monitorarTudo() {
    const timestamp = new Date().getTime();

    // 1. SE TIVER CORRIDA ATIVA: Monitora se ela foi finalizada
    if (idPedidoAtivo !== "") {
        fetch(`admin.php?verificar_status=1&id_pedido=${idPedidoAtivo}&_t=${timestamp}`)
        .then(r => r.text())
        .then(status => {
            const statusFinais = ["finalizado", "concluído", "recebido"];
            if (statusFinais.includes(status.trim())) {
                window.location.href = 'admin.php?atualizacao_imediata=1';
            }
        });
    }

    // 2. MONITORAR RADAR: Busca novas corridas
    fetch(`admin.php?_t=${timestamp}`)
    .then(response => response.text())
    .then(html => {
        const parser = new DOMParser();
        const doc = parser.parseFromString(html, 'text/html');
        const novasCorridas = doc.querySelectorAll('[id^="corrida-"]').length;

        if (novasCorridas > totalCorridasAtual) {
            repeticoesRestantes = 5;
            executarSequenciaAlarme();
            // Recarrega imediato para pegar a nova corrida
            setTimeout(() => { window.location.reload(); }, 1000);
        }
        totalCorridasAtual = novasCorridas;
    });
}

function executarSequenciaAlarme() {
    const som = document.getElementById('alarmeCorrida');
    if (som && repeticoesRestantes > 0) {
        som.currentTime = 0;
        som.play().catch(e => console.log("Som bloqueado pelo navegador. Clique na tela!"));
        repeticoesRestantes--;
        if (repeticoesRestantes > 0) setTimeout(executarSequenciaAlarme, 2000);
    }
}

// Verifica a cada 2 segundos (Tempo ideal para não pesar e ser rápido)
setInterval(monitorarTudo, 2000);

// Forçar liberação do áudio
document.body.addEventListener('click', () => {
    const som = document.getElementById('alarmeCorrida');
    if(som) som.muted = false;
}, { once: true });
</script>











































<script>
let totalCorridasAtual = <?php echo count($corridas_disponiveis); ?>;
let repeticoesRestantes = 0;

function monitorarNovasCorridas() {
    fetch('admin.php')
    .then(response => response.text())
    .then(html => {
        const parser = new DOMParser();
        const doc = parser.parseFromString(html, 'text/html');
        const novasCorridas = doc.querySelectorAll('[id^="corrida-"]').length;

        // Se o número de corridas aumentou, inicia a sequência de 5 toques
        if (novasCorridas > totalCorridasAtual) {
            repeticoesRestantes = 5;
            executarSequenciaAlarme();
            
            // Recarrega a página após o primeiro toque para mostrar a corrida
            setTimeout(() => { window.location.reload(); }, 2000);
        }
        
        totalCorridasAtual = novasCorridas;
    });
}

function executarSequenciaAlarme() {
    if (repeticoesRestantes > 0) {
        const som = document.getElementById('alarmeCorrida');
        if (som) {
            som.currentTime = 0; // Reinicia o som do começo
            som.play().catch(e => console.log("Aguardando interação para tocar som."));
            
            repeticoesRestantes--;
            
            // Toca novamente após 2 segundos (ajuste esse tempo se o som for longo)
            if (repeticoesRestantes > 0) {
                setTimeout(executarSequenciaAlarme, 2000);
            }
        }
    }
}

// Verifica o radar a cada 5 segundos
setInterval(monitorarNovasCorridas, 10000);

// Desmuda o áudio no primeiro clique do entregador na tela
document.body.addEventListener('click', function() {
    const som = document.getElementById('alarmeCorrida');
    som.muted = false;
}, { once: true });
</script>



<script>
let totalCorridasAtual = <?php echo count($corridas_disponiveis); ?>;
let repeticoesRestantes = 0;
let somDesbloqueado = false;

// Função para desbloquear o áudio (necessária para navegadores)
function desbloquearAudio() {
    const som = document.getElementById('alarmeCorrida');
    som.play().then(() => {
        som.pause();
        som.currentTime = 0;
        somDesbloqueado = true;
        console.log("Áudio liberado!");
    }).catch(e => console.log("Aguardando interação..."));
}

// Escuta o primeiro clique na página para liberar o som
document.addEventListener('click', desbloquearAudio, { once: true });
document.addEventListener('touchstart', desbloquearAudio, { once: true });

function executarSequenciaAlarme() {
    const som = document.getElementById('alarmeCorrida');
    if (som && repeticoesRestantes > 5) {
        som.muted = false;
        som.volume = 1.0;
        som.currentTime = 0;
        
        let playPromise = som.play();
        
        if (playPromise !== undefined) {
            playPromise.then(_ => {
                repeticoesRestantes--;
                if (repeticoesRestantes > 0) {
                    setTimeout(executarSequenciaAlarme, 1500); // Toca a cada 1.5s
                }
            }).catch(error => {
                console.log("Erro ao tocar: Clique na página primeiro!");
            });
        }
    }
}

function monitorarRadar() {
    const ts = new Date().getTime();
    fetch(`admin.php?_t=${ts}`)
    .then(r => r.text())
    .then(html => {
        const parser = new DOMParser();
        const doc = parser.parseFromString(html, 'text/html');
        const novasCorridas = doc.querySelectorAll('[id^="corrida-"]').length;

        // Se o número de corridas no HTML novo for maior que o atual
        if (novasCorridas > totalCorridasAtual) {
            repeticoesRestantes = 5;
            executarSequenciaAlarme();
            
            // Recarrega a página para mostrar a corrida, mas espera um pouco pro som tocar
            setTimeout(() => { window.location.reload(); }, 2500);
        }
        totalCorridasAtual = novasCorridas;
    });
}

// Verifica a cada 4 segundos para não travar o celular
setInterval(monitorarRadar, 4000);
</script>
<audio id="alarmeCorrida" preload="auto">
    <source src="https://raw.githubusercontent.com/rafael-p-vitor/sons/main/alerta.mp3" type="audio/mpeg">
    <source src="https://assets.mixkit.co/active_storage/sfx/951/951-preview.mp3" type="audio/mpeg">
</audio>

<audio id="alarmeCorrida" src="https://assets.mixkit.co/active_storage/sfx/951/951-preview.mp3" preload="auto"></audio>





<script>
// Variáveis de controle pegas do PHP no carregamento inicial
let totalRadarAtual = <?php echo count($corridas_disponiveis); ?>;
const idPedidoEmFoco = "<?php echo $pedido_em_foco ? $pedido_em_foco['id'] : ''; ?>";
let repeticoesRestantes = 0;

function executarAlarme5Vezes() {
    const som = document.getElementById('alarmeCorrida');
    if (som && repeticoesRestantes > 0) {
        som.currentTime = 0;
        som.play().then(() => {
            repeticoesRestantes--;
            if (repeticoesRestantes > 0) {
                setTimeout(executarAlarme5Vezes, 1500); // Toca a cada 1.5s
            } else {
                window.location.reload(); // Atualiza após os 5 toques
            }
        }).catch(e => {
            console.log("Clique na tela para liberar o som!");
            window.location.reload(); // Se o som falhar, atualiza mesmo assim
        });
    }
}

function verificarBancoDados() {
    const ts = new Date().getTime(); // Anti-cache
    
    fetch(`admin.php?check_updates=1&id_pedido_ativo=${idPedidoEmFoco}&_t=${ts}`)
    .then(r => r.json())
    .then(data => {
        
        // 1. VERIFICA SE A CORRIDA ATUAL FOI FINALIZADA
        if (idPedidoEmFoco !== "") {
            const statusFinais = ["finalizado", "concluído", "recebido"];
            if (statusFinais.includes(data.status_ativo)) {
                window.location.reload(); // Atualiza na hora para liberar o radar
                return;
            }
        }

        // 2. VERIFICA SE CHEGOU NOVA CORRIDA NO RADAR
        if (data.total_radar > totalRadarAtual) {
            repeticoesRestantes = 20;
            executarAlarme5Vezes();
        } 
        // Se alguma corrida sumiu (alguém pegou), apenas atualiza o contador
        else if (data.total_radar < totalRadarAtual) {
            totalRadarAtual = data.total_radar;
            window.location.reload();
        }
    });
}

// Verifica a cada 3 segundos
setInterval(verificarBancoDados, 9000);

// Libera o som no primeiro toque do entregador
document.addEventListener('click', () => {
    const som = document.getElementById('alarmeCorrida');
    if(som) { som.play().then(() => { som.pause(); som.currentTime = 0; }); }
}, { once: true });
</script>


<script>
// Variável para evitar envios duplicados muito rápidos
let ultimaPosicao = { lat: 0, lng: 0 };

function iniciarRastreio() {
    if ("geolocation" in navigator) {
        navigator.geolocation.watchPosition(
            (position) => {
                const { latitude, longitude } = position.coords;
                
                // Só envia se o entregador se moveu mais de 5 metros (aproximadamente)
                if (latitude !== ultimaPosicao.lat || longitude !== ultimaPosicao.lng) {
                    ultimaPosicao = { lat: latitude, lng: longitude };

                    fetch('atualizar_posicao.php', {
                        method: 'POST',
                        headers: { 'Content-Type': 'application/json' },
                        body: JSON.stringify({
                            lat: latitude,
                            lng: longitude,
                            entregador_id: '<?php echo $meu_id; ?>'
                        })
                    }).then(res => console.log("Posição enviada!"));
                }
            },
            (error) => {
                console.error("Erro no GPS: ", error.message);
                alert("Para o rastreio funcionar, ative o GPS e permita o acesso nas configurações do navegador.");
            },
            {
                enableHighAccuracy: true, // Força alta precisão (GPS)
                maximumAge: 10000,
                timeout: 90000
            }
        );
    }
}

// Inicia o rastreio assim que a página carrega
window.onload = iniciarRastreio;
</script>




























<script>
// Pega o ID da corrida que está em foco agora
const idAtivo = "<?php echo $pedido_em_foco ? $pedido_em_foco['id'] : ''; ?>";

function monitorarFinalizacao() {
    if (idAtivo === "") return; // Se não tem corrida ativa, não faz nada

    const ts = new Date().getTime(); // Anti-cache
    fetch(`admin.php?check_finalizado=1&id_pedido=${idAtivo}&_t=${ts}`)
    .then(r => r.text())
    .then(resultado => {
        if (resultado.trim() === "finalizou") {
            // FINALIZOU! Recarrega a página para liberar o radar e mostrar o saldo novo
            window.location.href = "admin.php";
        }
    });
}

// Verifica a cada 2 segundos para ser bem rápido
if (idAtivo !== "") {
    setInterval(monitorarFinalizacao, 900000);
}
</script>


<script>
// Armazena no navegador quantas corridas tinham na última vez
let totalAnterior = localStorage.getItem('totalCorridas') || 0;
let totalAgora = <?php echo count($corridas_disponiveis); ?>;

if (totalAgora > totalAnterior) {
    // Toca o som (lembre-se que precisa clicar na tela uma vez ao abrir o painel)
    const som = document.getElementById('alarmeCorrida');
    if(som) {
        som.play();
        // Opcional: repetir com um loop simples se quiser 5 vezes
    }
}

// Salva o total atual para a próxima atualização
localStorage.setItem('totalCorridas', totalAgora);
</script>




<script>
function verificarGPS() {
    if (!"geolocation" in navigator) {
        alert("Seu navegador não suporta GPS. Use o Chrome ou Safari.");
        return;
    }

    // Tenta obter a posição atual
    navigator.geolocation.getCurrentPosition(
        function(position) {
            // SUCESSO: GPS Ativo e Permitido
            document.getElementById('bloqueio-gps').style.display = 'none';
            document.getElementById('conteudo-principal').style.display = 'block';
            
            // Inicia o rastreio contínuo que já criamos antes
            iniciarRastreio(); 
        },
        function(error) {
            // ERRO: Usuário negou ou GPS desligado
            console.error("Erro ao acessar GPS:", error);
            let mensagem = "Erro desconhecido.";
            
            switch(error.code) {
                case error.PERMISSION_DENIED:
                    mensagem = "Você negou o acesso ao GPS. Vá nas configurações do site e permita a localização.";
                    break;
                case error.POSITION_UNAVAILABLE:
                    mensagem = "O sinal do GPS está indisponível ou o GPS do celular está desligado.";
                    break;
                case error.TIMEOUT:
                    mensagem = "Tempo esgotado ao tentar obter localização.";
                    break;
            }
            alert(mensagem);
        },
        { enableHighAccuracy: true, timeout: 10000 }
    );
}

// Executa assim que a página abre
window.onload = verificarGPS;
</script>






















<nav class="fixed bottom-0 left-0 right-0 bg-white border-t border-gray-100 px-8 py-5 z-[100] rounded-t-[2.5rem] shadow-[0_-10px_40px_rgba(0,0,0,0.08)]">
    <div class="max-w-md mx-auto flex justify-between items-center text-gray-300">
        
        <a href="admin.php" class="flex flex-col items-center transition-all <?php echo (basename($_SERVER['PHP_SELF']) == 'admin.php') ? 'text-black' : ''; ?>">
            <div class="relative">
                <i class="fas fa-radar text-xl"></i>
                <?php if (count($corridas_disponiveis) > 0): ?>
                    <span class="absolute -top-1 -right-1 w-2 h-2 bg-red-500 rounded-full animate-ping"></span>
                <?php endif; ?>
            </div>
            <span class="text-[8px] font-black uppercase mt-1 italic">Radar</span>
        </a>

        <a href="carteira_entregador.php" class="flex flex-col items-center transition-all <?php echo (basename($_SERVER['PHP_SELF']) == 'carteira_entregador.php') ? 'text-black' : ''; ?>">
            <i class="fas fa-wallet text-xl"></i>
            <span class="text-[8px] font-black uppercase mt-1 italic">Ganhos</span>
        </a>

        <a href="historico_entregas.php" class="flex flex-col items-center transition-all <?php echo (basename($_SERVER['PHP_SELF']) == 'historico_entregas.php') ? 'text-black' : ''; ?>">
            <i class="fas fa-list-ul text-xl"></i>
            <span class="text-[8px] font-black uppercase mt-1 italic">Corridas</span>
        </a>

        <a href="perfil_entregador.php" class="flex flex-col items-center transition-all <?php echo (basename($_SERVER['PHP_SELF']) == 'perfil_entregador.php') ? 'text-black' : ''; ?>">
            <div class="w-6 h-6 rounded-full bg-gray-100 border border-gray-200 flex items-center justify-center overflow-hidden">
                <i class="fas fa-user text-xs"></i>
            </div>
            <span class="text-[8px] font-black uppercase mt-1 italic">Perfil</span>
        </a>

    </div>
</nav>

<div class="h-24"></div>


</body>
</html>



</div>