<?php
header('Content-Type: text/html; charset=utf-8');
require_once 'config/database.php';

echo "<h1>🔍 Verificar Viagem ID 259</h1>";

try {
    $pdo = conectarBanco();
    
    // 1. Verificar dados da viagem 259
    echo "<h2>📋 Dados da Viagem ID 259</h2>";
    $sql = "SELECT * FROM viagens WHERE id = 259";
    $stmt = $pdo->query($sql);
    $viagem = $stmt->fetch(PDO::FETCH_ASSOC);
    
    if ($viagem) {
        echo "<table border='1' style='border-collapse: collapse; width: 100%;'>";
        echo "<tr><th>Campo</th><th>Valor</th></tr>";
        foreach ($viagem as $campo => $valor) {
            $cor = '';
            if ($campo == 'data_fim' && $valor === null) {
                $cor = 'background-color: #e8f5e8;'; // Verde para ativa
            } elseif (in_array($campo, ['km_gps_final', 'latitude_inicial', 'longitude_inicial', 'latitude_final', 'longitude_final']) && ($valor === null || $valor == '0.00000000')) {
                $cor = 'background-color: #ffe6e6;'; // Vermelho para dados faltando
            }
            
            echo "<tr style='$cor'>";
            echo "<td><strong>$campo</strong></td>";
            echo "<td>" . ($valor ?: 'NULL') . "</td>";
            echo "</tr>";
        }
        echo "</table>";
        
        // Status da viagem
        if ($viagem['data_fim'] === null) {
            echo "<div style='background: #e8f5e8; padding: 15px; border-radius: 5px; margin: 10px 0;'>";
            echo "<h3>✅ VIAGEM ATIVA!</h3>";
            echo "<p>A viagem ID 259 está em andamento (data_fim = NULL)</p>";
            echo "</div>";
        } else {
            echo "<div style='background: #ffe6e6; padding: 15px; border-radius: 5px; margin: 10px 0;'>";
            echo "<h3>❌ VIAGEM FINALIZADA!</h3>";
            echo "<p>A viagem ID 259 foi finalizada em: " . $viagem['data_fim'] . "</p>";
            echo "</div>";
        }
        
    } else {
        echo "<p>❌ Viagem ID 259 não encontrada!</p>";
    }
    
    // 2. Verificar pontos GPS na rastreamento_tempo_real
    echo "<h2>📍 Pontos GPS na rastreamento_tempo_real</h2>";
    $sql = "SELECT COUNT(*) as total FROM rastreamento_tempo_real WHERE viagem_id = 259";
    $stmt = $pdo->query($sql);
    $total = $stmt->fetch(PDO::FETCH_ASSOC)['total'];
    
    echo "<p><strong>Total de pontos GPS para viagem 259:</strong> $total</p>";
    
    if ($total > 0) {
        $sql = "SELECT * FROM rastreamento_tempo_real WHERE viagem_id = 259 ORDER BY timestamp DESC LIMIT 10";
        $stmt = $pdo->query($sql);
        $pontos = $stmt->fetchAll(PDO::FETCH_ASSOC);
        
        echo "<h3>Últimos 10 pontos:</h3>";
        echo "<table border='1' style='border-collapse: collapse; width: 100%;'>";
        echo "<tr><th>ID</th><th>Latitude</th><th>Longitude</th><th>Velocidade</th><th>Precisão</th><th>Timestamp</th></tr>";
        
        foreach ($pontos as $ponto) {
            echo "<tr>";
            echo "<td>{$ponto['id']}</td>";
            echo "<td>{$ponto['latitude']}</td>";
            echo "<td>{$ponto['longitude']}</td>";
            echo "<td>{$ponto['velocidade']} km/h</td>";
            echo "<td>{$ponto['precisao']}m</td>";
            echo "<td>{$ponto['timestamp']}</td>";
            echo "</tr>";
        }
        echo "</table>";
        
        // Calcular distância total
        if (count($pontos) > 1) {
            $distanciaTotal = 0;
            for ($i = 0; $i < count($pontos) - 1; $i++) {
                $lat1 = $pontos[$i]['latitude'];
                $lon1 = $pontos[$i]['longitude'];
                $lat2 = $pontos[$i + 1]['latitude'];
                $lon2 = $pontos[$i + 1]['longitude'];
                
                $distancia = haversine($lat1, $lon1, $lat2, $lon2);
                $distanciaTotal += $distancia;
            }
            
            echo "<div style='background: #e8f5e8; padding: 15px; border-radius: 5px; margin: 10px 0;'>";
            echo "<h3>📊 Estatísticas dos Pontos GPS:</h3>";
            echo "<p><strong>Distância total calculada:</strong> " . number_format($distanciaTotal, 3) . " km</p>";
            echo "<p><strong>Velocidade média:</strong> " . number_format(array_sum(array_column($pontos, 'velocidade')) / count($pontos), 1) . " km/h</p>";
            echo "<p><strong>Precisão média:</strong> " . number_format(array_sum(array_column($pontos, 'precisao')) / count($pontos), 1) . " metros</p>";
            echo "</div>";
        }
        
    } else {
        echo "<div style='background: #ffe6e6; padding: 15px; border-radius: 5px; margin: 10px 0;'>";
        echo "<h3>❌ NENHUM PONTO GPS!</h3>";
        echo "<p>Ainda não há pontos GPS salvos para a viagem 259.</p>";
        echo "<p><strong>Possíveis causas:</strong></p>";
        echo "<ul>";
        echo "<li>App ainda não enviou pontos</li>";
        echo "<li>Problema de conectividade</li>";
        echo "<li>LocationForegroundService não está ativo</li>";
        echo "</ul>";
        echo "</div>";
    }
    
    // 3. Verificar status do técnico
    echo "<h2>👤 Status do Técnico (ADMIN - ID 4)</h2>";
    $sql = "SELECT * FROM status_tecnicos WHERE tecnico_id = 4 ORDER BY ultimo_ping DESC LIMIT 1";
    $stmt = $pdo->query($sql);
    $status = $stmt->fetch(PDO::FETCH_ASSOC);
    
    if ($status) {
        echo "<table border='1' style='border-collapse: collapse; width: 100%;'>";
        echo "<tr><th>Campo</th><th>Valor</th></tr>";
        foreach ($status as $campo => $valor) {
            echo "<tr>";
            echo "<td><strong>$campo</strong></td>";
            echo "<td>" . ($valor ?: 'NULL') . "</td>";
            echo "</tr>";
        }
        echo "</table>";
        
        $ultimoPing = strtotime($status['ultimo_ping']);
        $agora = time();
        $diferenca = $agora - $ultimoPing;
        
        if ($diferenca < 60) {
            echo "<div style='background: #e8f5e8; padding: 15px; border-radius: 5px; margin: 10px 0;'>";
            echo "<h3>✅ TÉCNICO ONLINE!</h3>";
            echo "<p>Último ping: " . $status['ultimo_ping'] . " (há " . $diferenca . " segundos)</p>";
            echo "</div>";
        } else {
            echo "<div style='background: #fff3cd; padding: 15px; border-radius: 5px; margin: 10px 0;'>";
            echo "<h3>⚠️ TÉCNICO OFFLINE!</h3>";
            echo "<p>Último ping: " . $status['ultimo_ping'] . " (há " . $diferenca . " segundos)</p>";
            echo "</div>";
        }
    } else {
        echo "<div style='background: #ffe6e6; padding: 15px; border-radius: 5px; margin: 10px 0;'>";
        echo "<h3>❌ SEM STATUS DO TÉCNICO!</h3>";
        echo "<p>Não há registro de status para o técnico ID 4.</p>";
        echo "</div>";
    }
    
    // 4. Análise geral
    echo "<h2>🔍 Análise Geral</h2>";
    
    if ($viagem && $viagem['data_fim'] === null) {
        if ($total > 0) {
            echo "<div style='background: #e8f5e8; padding: 15px; border-radius: 5px;'>";
            echo "<h3>✅ TUDO FUNCIONANDO PERFEITAMENTE!</h3>";
            echo "<ul>";
            echo "<li>✅ Viagem ativa</li>";
            echo "<li>✅ $total pontos GPS coletados</li>";
            echo "<li>✅ Dados sendo salvos na tabela rastreamento_tempo_real</li>";
            echo "<li>✅ Sistema de rastreamento funcionando</li>";
            echo "</ul>";
            echo "<p><strong>Continue caminhando para coletar mais pontos!</strong></p>";
            echo "</div>";
        } else {
            echo "<div style='background: #fff3cd; padding: 15px; border-radius: 5px;'>";
            echo "<h3>⚠️ VIAGEM ATIVA MAS SEM PONTOS GPS</h3>";
            echo "<p>A viagem está ativa, mas ainda não há pontos GPS salvos.</p>";
            echo "<p><strong>Possíveis causas:</strong></p>";
            echo "<ul>";
            echo "<li>App acabou de iniciar a viagem</li>";
            echo "<li>LocationForegroundService ainda não enviou pontos</li>";
            echo "<li>Problema temporário de conectividade</li>";
            echo "</ul>";
            echo "<p><strong>Aguarde alguns minutos e verifique novamente.</strong></p>";
            echo "</div>";
        }
    } else {
        echo "<div style='background: #ffe6e6; padding: 15px; border-radius: 5px;'>";
        echo "<h3>❌ VIAGEM FINALIZADA OU NÃO ENCONTRADA</h3>";
        echo "<p>A viagem 259 não está ativa ou não foi encontrada.</p>";
        echo "</div>";
    }
    
} catch (Exception $e) {
    echo "<p>❌ Erro: " . $e->getMessage() . "</p>";
}

// Função Haversine para calcular distância
function haversine($lat1, $lon1, $lat2, $lon2) {
    $R = 6371.0; // Raio da Terra em km
    $dLat = deg2rad($lat2 - $lat1);
    $dLon = deg2rad($lon2 - $lon1);
    $lat1 = deg2rad($lat1);
    $lat2 = deg2rad($lat2);
    
    $a = sin($dLat/2) * sin($dLat/2) + cos($lat1) * cos($lat2) * sin($dLon/2) * sin($dLon/2);
    $c = 2 * atan2(sqrt($a), sqrt(1-$a));
    return $R * $c;
}
?>

<div style="margin-top: 20px; padding: 10px; background: #f0f0f0; border-radius: 5px;">
    <h3>🔄 Atualizar Página</h3>
    <p>Clique <a href="javascript:location.reload()">aqui</a> para atualizar e ver os dados mais recentes.</p>
</div>
