<?php





// Endpoint para o cliente verificar se o entregador abandonou a corrida
if (isset($_GET['checar_abandono'])) {
    $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) {
            // Se o entregador_id estiver vazio, significa que ele saiu/abandonou
            echo (empty($pt['entregador_id'])) ? "abandonou" : "ok";
            exit;
        }
    }
    exit;
}



























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

// 1. CONFIGURAÇÕES
$meu_id = trim((string)($_SESSION['usuario_id'] ?? $_SESSION['cliente_id'] ?? ''));
$arquivo_pedidos = 'db_pedidos.json';
$arquivo_creditos = 'creditos.json';

// Função Unificada para Alterar Saldo
function ajustarSaldo($id, $valor, $operacao = 'soma') {
    global $arquivo_creditos;
    $creditos = file_exists($arquivo_creditos) ? json_decode(file_get_contents($arquivo_creditos), true) : [];
    $id_limpo = trim((string)$id);
    if ($id_limpo === "" || $id_limpo === "0") return false;

    $saldo_atual = floatval($creditos[$id_limpo] ?? 0.00);
    if ($operacao == 'soma') {
        $creditos[$id_limpo] = $saldo_atual + floatval($valor);
    } else {
        $creditos[$id_limpo] = $saldo_atual - floatval($valor);
    }
    return file_put_contents($arquivo_creditos, json_encode($creditos, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
}

function buscarSaldo($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);
}

// --- 2. LÓGICA DE CANCELAMENTO (APENAS REDIRECIONA) ---
if (isset($_POST['cancelar_pedido'])) {
    $id_pedido_cancela = $_POST['id_pedido'];
    $pedidos_db = file_exists($arquivo_pedidos) ? json_decode(file_get_contents($arquivo_pedidos), true) : [];

    foreach ($pedidos_db as &$p) {
        if ($p['id'] == $id_pedido_cancela) {
            $p['status'] = 'Cancelado pelo Cliente';
            break;
        }
    }
    file_put_contents($arquivo_pedidos, json_encode($pedidos_db, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
    header("Location: index.php");
    exit;
}

// --- 3. LÓGICA DE FINALIZAÇÃO (DEBITA 10 DO CLIENTE | PAGA 5 AO ENTREGADOR) ---
if (isset($_POST['finalizar_corrida'])) {
    $id_pedido_f = $_POST['id_pedido'];
    $cod_digitado = $_POST['codigo_finalizacao'];
    $pedidos_db = json_decode(file_get_contents($arquivo_pedidos), true);
    $sucesso = false;

    foreach ($pedidos_db as &$p) {
        if ($p['id'] == $id_pedido_f && trim($p['codigo_entrega']) == trim($cod_digitado)) {
            if ($p['status'] !== 'Finalizado') {
                $id_entregador = trim((string)($p['entregador_id'] ?? ''));
                $id_cliente = trim((string)($p['cliente_id'] ?? ''));

                // 1. DEBITA R$ 10,00 DO CLIENTE
                ajustarSaldo($id_cliente, 10.00, 'subtrai');
                
                // 2. REPASSA R$ 5,00 PARA O ENTREGADOR
                if (!empty($id_entregador)) { 
                    ajustarSaldo($id_entregador, 5.00, 'soma'); 
                }

                $p['status'] = 'Finalizado';
                $p['data_finalizacao'] = date('d/m/Y H:i:s');
                $sucesso = true;
            }
            break;
        }
    }
    if ($sucesso) {
        file_put_contents($arquivo_pedidos, json_encode($pedidos_db, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
        echo "<script>alert('Corrida Finalizada! Debitado R$ 10,00 do seu saldo.'); window.location.href='index.php';</script>";
        exit;
    } else {
        echo "<script>alert('Código incorreto!');</script>";
    }
}

// 4. CONFIGURAÇÕES DE EXIBIÇÃO
header("Cache-Control: no-cache, no-store, must-revalidate");
date_default_timezone_set('America/Sao_Paulo');

$pedidos = file_exists($arquivo_pedidos) ? json_decode(file_get_contents($arquivo_pedidos), true) : [];
$pedido_atual = null;
$status_finalizados = ["finalizado", "finalizada", "cancelado pelo cliente", "concluído"];

foreach (array_reverse($pedidos) as $p) {
    if (trim((string)($p['cliente_id'] ?? '')) == $meu_id) {
        if (!in_array(mb_strtolower(trim($p['status'])), $status_finalizados)) {
            $pedido_atual = $p;
            break;
        }
    }
}

if (!$pedido_atual) { header("Location: index.php"); exit; }

$entregador_aceitou = (!empty($pedido_atual['entregador_id']));
$saldo_na_tela = buscarSaldo($meu_id);

// BUSCA FOTO DO ENTREGADOR
$foto_entregador = 'default-user.png'; 
if ($entregador_aceitou) {
    $id_busca = trim((string)$pedido_atual['entregador_id']);
    $arquivos_encontrados = glob("uploads/selfies/" . $id_busca . "_*.{jpeg,jpg,png,jfif}", GLOB_BRACE);
    if ($arquivos_encontrados) { $foto_entregador = $arquivos_encontrados[0]; }
}
?>


<!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.0.0/css/all.min.css">
    <link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" />
    
    <title>BRT Express | Acompanhamento</title>
    <style>
        @import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;700;900&display=swap');
        body { font-family: 'Montserrat', sans-serif; background-color: #f3f4f6; }
        .bg-brt { background-color: #FFD100; }
        .text-brt { color: #FFD100; }
        .chat-container { width: 100%; height: 350px; border: 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>

<body class="pb-20">
<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script>


<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script>







<div class="bg-black text-white px-6 pt-12 pb-20 rounded-b-[3.5rem] shadow-xl relative">
    <div class="max-w-md mx-auto flex justify-center items-center">
        <img src="logooficial.jpeg" alt="BRT Entregas" class="h-12 object-contain border-2 border-[#FFD100] rounded-lg">
    </div>
</div>

<div class="max-w-md mx-auto px-6 -mt-12 space-y-4 relative z-20">
    <div class="bg-white rounded-[2.5rem] p-6 shadow-2xl border border-gray-100">
        <div class="flex justify-between items-center mb-6 pb-4 border-b border-gray-100">
            <div class="text-left">
                <p class="text-[8px] font-black text-gray-400 uppercase tracking-widest leading-none">Pedido ID</p>
                <p class="text-xs font-bold text-gray-800">#<?php echo $pedido_atual['id']; ?></p>
            </div>
            <div class="text-right">
                <p class="text-[8px] font-black text-gray-400 uppercase tracking-widest leading-none">Seu Saldo</p>
                <p class="text-sm font-black text-black">R$ <?php echo number_format($saldo_na_tela, 2, ',', '.'); ?></p>
            </div>
        </div>

        <div class="text-center mb-6">
            <h2 class="text-2xl font-black text-gray-900 uppercase italic leading-tight"><?php echo $status_txt; ?></h2>
        </div>

        <?php if ($entregador_aceitou): ?>
            <div class="flex items-center gap-4 bg-black p-4 rounded-2xl border-l-4 border-[#FFD100] mb-6 shadow-lg">
                <img src="<?php echo $foto_entregador; ?>" onclick="abrirFotoGrande(this.src)" class="w-14 h-14 rounded-xl object-cover border-2 border-[#FFD100] shadow-sm cursor-zoom-in">
                <div class="flex-1">
                    <p class="text-[9px] font-black text-[#FFD100] uppercase tracking-tighter">Entregador a caminho</p>
                    <p class="text-md font-black text-white uppercase leading-none"><?php echo $pedido_atual['entregador_nome'] ?? 'Parceiro BRT'; ?></p>
                    <div class="flex gap-1 mt-1">
                        <?php for($i=0;$i<5;$i++): ?><i class="fas fa-star text-[8px] text-[#FFD100]"></i><?php endfor; ?>
                    </div>
                </div>
                <div class="bg-[#FFD100] p-2 rounded-full text-black"><i class="fas fa-phone-alt text-xs"></i></div>
            </div>
        <?php else: ?>
            
            
            
            
           <div class="py-10 text-center relative overflow-hidden bg-gray-950 rounded-[2.5rem] border-2 border-dashed border-[#FFD100]/20 mb-6 shadow-inner">
    
    <div class="relative w-48 h-48 mx-auto mb-5 flex items-center justify-center">
        
        <div class="absolute inset-0 rounded-full border border-[#FFD100]/30"></div>
        <div class="absolute inset-6 rounded-full border border-[#FFD100]/20"></div>
        <div class="absolute inset-12 rounded-full border border-[#FFD100]/15"></div>
        <div class="absolute inset-20 rounded-full border border-[#FFD100]/10"></div>
        
        <div class="absolute inset-0 flex items-center justify-center opacity-20">
            <div class="h-full w-[1px] bg-[#FFD100]"></div>
            <div class="w-full h-[1px] bg-[#FFD100] absolute"></div>
        </div>

        <div class="absolute inset-0 flex items-center justify-center animate-spin" style="animation-duration: 4s;">
            <div class="h-1/2 w-1/2 bg-gradient-to-tr from-transparent to-[#FFD100]/40 rounded-tl-full origin-bottom-right"></div>
        </div>

        <div class="absolute top-14 left-10 w-2 h-2 bg-green-500 rounded-full animate-pulse shadow-[0_0_8px_#22c55e]" style="animation-delay: 0.2s;"></div>
        
        <div class="absolute top-8 right-16 w-1.5 h-1.5 bg-[#FFD100] rounded-full animate-pulse shadow-[0_0_8px_#FFD100]" style="animation-delay: 1.5s;"></div>
        
        <div class="absolute bottom-10 right-12 w-2 h-2 bg-green-400 rounded-full animate-pulse shadow-[0_0_8px_#4ade80]" style="animation-delay: 0.8s;"></div>
        
        <div class="absolute bottom-20 left-6 w-2 h-2 bg-blue-400 rounded-full animate-pulse shadow-[0_0_8px_#60a5fa]" style="animation-delay: 2.1s;"></div>
        
        <div class="absolute top-20 right-8 w-2.5 h-2.5 bg-green-500 rounded-full animate-pulse shadow-[0_0_10px_#22c55e]" style="animation-delay: 0.5s;"></div>
        
        <div class="absolute bottom-6 left-24 w-1.5 h-1.5 bg-gray-500 rounded-full opacity-50"></div>
        
        <div class="absolute top-4 left-24 w-2 h-2 bg-green-500 rounded-full animate-pulse" style="animation-delay: 3s;"></div>
        
        <div class="absolute bottom-24 right-4 w-1.5 h-1.5 bg-[#FFD100] rounded-full animate-pulse" style="animation-delay: 1.1s;"></div>

        <div class="relative z-10 bg-black text-[#FFD100] w-14 h-14 rounded-full flex items-center justify-center shadow-[0_0_20px_rgba(255,209,0,0.4)] border-2 border-[#FFD100]">
            <i class="fas fa-street-view text-xl"></i>
        </div>
    </div>
    
    <div class="relative z-10 px-6">
        <h4 class="text-[13px] font-black uppercase text-[#FFD100] tracking-widest mb-1 italic">Scan de Área BRT</h4>
        <div class="flex items-center justify-center gap-3">
            
         
        </div>
        
        <p class="mt-4 text-[9px] font-black uppercase text-gray-500 animate-pulse tracking-[0.2em]">
            Sincronizando coordenadas em tempo real...
        </p>
    </div>

    <div class="absolute inset-0 opacity-[0.05]" style="background-image: radial-gradient(#FFD100 0.5px, transparent 0.5px); background-size: 15px 15px;"></div>
</div>
                
                
                
                
                
                
                
                
                
                <center>
                <form method="POST" class="mt-6" onsubmit="return confirm('Deseja cancelar?')">
                    <input type="hidden" name="id_pedido" value="<?php echo $pedido_atual['id']; ?>">
                    <button type="submit" name="cancelar_pedido" class="bg-white border-2 border-red-500 text-red-500 text-[9px] font-black px-6 py-2 rounded-full uppercase hover:bg-red-50">
                        <i class="fas fa-times mr-1"></i> Cancelar Corrida
                    </button>
                </form>
            </div>
        <?php endif; ?> </center>

        <div class="bg-gray-50 rounded-2xl p-4 mb-6 border border-gray-100">
            <p class="text-[10px] font-black text-gray-400 uppercase">O que você está enviando:</p>
            <p class="text-sm font-bold text-gray-800 mb-3"><?php echo $pedido_atual['item'] ?? 'Item não especificado'; ?></p>
            
            <div class="bg-red-50 border-l-4 border-red-500 p-4 rounded-xl my-4 shadow-sm">
    <div class="flex items-center gap-3">
        <i class="fas fa-exclamation-triangle text-red-500 text-lg"></i>
        <div>
            <h4 class="text-[11px] font-black uppercase italic text-red-600 leading-none">Atenção ao Tamanho</h4>
            <p class="text-[11px] ">
                Itens acima de **1 metro** ou **5kg** podem ser recusados pelo entregador. Fique atento!
            </p>
        </div>
    </div>
</div>
            
            
            
            
            
            
            
</div>

        <div class="space-y-4 relative">
            <div class="flex items-start gap-3 relative z-10">
                <div class="w-6 h-6 bg-black rounded-full flex items-center justify-center text-[10px] text-[#FFD100] font-bold mt-1 shadow-md">A</div>
                <div>
                    <p class="text-[10px] font-black text-gray-400 uppercase mb-1">Coleta em:</p>
                    <p class="text-[13px] font-bold text-gray-700 leading-tight"><?php echo $pedido_atual['ponto_retirada'] ?? 'Ponto A'; ?></p>
                </div>
            </div>
            <div class="flex items-start gap-3 relative z-10">
                <div class="w-6 h-6 bg-[#FFD100] rounded-full flex items-center justify-center text-[10px] text-black font-bold mt-1 shadow-md">B</div>
                <div>
                    <p class="text-[10px] font-black text-gray-400 uppercase mb-1">Entrega para:</p>
                    <p class="text-[13px] font-bold text-gray-700 leading-tight"><?php echo $pedido_atual['ponto_entrega'] ?? 'Destino B'; ?></p>
                </div>
            </div>
        </div>
    </div>

    <?php if ($entregador_aceitou): ?>
    <div class="overflow-hidden rounded-[2.5rem] border border-white shadow-2xl bg-white mt-4">
         <div class="bg-black px-6 py-3 flex justify-between items-center">
             <p class="text-[10px] font-black uppercase text-gray-100 tracking-widest">Falando com Entregador</p>
             <div class="w-2 h-2 bg-green-500 rounded-full animate-pulse"></div>
         </div>
         <iframe src="chat.php?pedido_id=<?php echo $pedido_atual['id']; ?>" class="chat-container"></iframe>
    </div>
    
    <div id="container-finalizar" class="mt-4">
        <form method="POST" class="bg-black p-6 rounded-[3rem] shadow-2xl border-4 border-brt">
            <input type="hidden" name="id_pedido" value="<?php echo $pedido_atual['id']; ?>">
            <div class="text-center mb-4">
                <p class="text-[10px] font-black text-brt uppercase tracking-widest mb-1">Finalizar Corrida</p>
                <p class="text-[10px] text-white/50 italic font-bold">Valor: R$ <?php echo number_format($pedido_atual['valor'] ?? 0, 2, ',', '.'); ?></p>
            </div>
            <input type="number" name="codigo_finalizacao" required placeholder="CÓDIGO" class="w-full bg-white/10 p-5 rounded-3xl text-center text-4xl font-black text-white outline-none mb-4 tracking-[0.4em]">
            <button type="submit" name="finalizar_corrida" class="w-full bg-brt text-black font-black py-5 rounded-[2rem] uppercase text-xs tracking-widest">PAGAR E FINALIZAR</button>
        </form>
    </div>
    <?php endif; ?>
</div>

<div id="modalFoto" class="fixed inset-0 z-[999] hidden bg-black/95 flex items-center justify-center p-4" onclick="fecharFotoGrande()">
    <img id="fotoAmpliada" src="" class="max-w-full max-h-[80vh] rounded-2xl border-2 border-white/10 shadow-2xl">
</div>


<!-- Container do Mapa -->
<div id="mapa_cliente" style="height: 400px; width: 100%; border-radius: 15px;"></div>

<!-- Leaflet JS -->
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" />
<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script>

<script>
    // Configura o mapa inicial (Campo Grande/RJ como base)
    var mapa = L.map('mapa_cliente').setView([-22.903, -43.559], 15);
    L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(mapa);

    // Ícone da Motinha
    var iconMoto = L.icon({
        iconUrl: 'https://cdn-icons-png.flaticon.com/512/3448/3448624.png',
        iconSize: [40, 40],
        iconAnchor: [20, 40]
    });

    var marcadorEntregador = null;

    function atualizarMapa() {
        fetch('posicoes_entregadores.json?cache=' + Date.now())
            .then(res => res.json())
            .then(posicoes => {
                const idEntregador = '<?php echo $pedido['entregador_id']; ?>';
                const dados = posicoes[idEntregador];

                if (dados) {
                    const novaPos = [dados.lat, dados.lng];

                    if (!marcadorEntregador) {
                        // Cria o marcador se não existir
                        marcadorEntregador = L.marker(novaPos, { icon: iconMoto }).addTo(mapa);
                    } else {
                        // Move o marcador existente
                        marcadorEntregador.setLatLng(novaPos);
                    }
                    
                    // Centraliza o mapa no entregador
                    mapa.panTo(novaPos);
                }
            });
    }

    // Atualiza a cada 5 segundos
    setInterval(atualizarMapa, 5000);
</script>






















<script>
    function abrirFotoGrande(src) {
        document.getElementById('fotoAmpliada').src = src;
        document.getElementById('modalFoto').classList.remove('hidden');
    }
    function fecharFotoGrande() {
        document.getElementById('modalFoto').classList.add('hidden');
    }

    // LÓGICA DE ATUALIZAÇÃO AUTOMÁTICA
    const idPedido = "<?php echo $p['id']; ?>"; 
    const temEntregador = <?php echo $entregador_aceitou ? 'true' : 'false'; ?>;

    if (!temEntregador) {
        // Se ainda não tem entregador, procura um novo a cada 8 segundos
        setTimeout(() => { location.reload(); }, 8000);
    } else {
        // Se já tem entregador, monitora se ele vai abandonar a corrida
        setInterval(() => {
            fetch(`acompanhamento.php?checar_abandono=1&id_pedido=${idPedido}&t=${new Date().getTime()}`)
            .then(r => r.text())
            .then(status => {
                if (status.trim() === "abandonou") {
                    // O entregador saiu! Recarrega a página para avisar o cliente
                    location.reload();
                }
            });
        }, 4000); // Verifica a cada 4 segundos
    }
</script>



<script>
    function abrirFotoGrande(src) {
        document.getElementById('fotoAmpliada').src = src;
        document.getElementById('modalFoto').classList.remove('hidden');
    }
    function fecharFotoGrande() {
        document.getElementById('modalFoto').classList.add('hidden');
    }
    <?php if (!$entregador_aceitou): ?>
    setTimeout(() => { location.reload(); }, 8000);
    <?php endif; ?>
</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>
// 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>









</body>
</html>