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

echo "<h1>🧪 Teste Completo do Sistema GPS</h1>";

try {
    $pdo = conectarBanco();
    
    // 1. Verificar viagens ativas
    echo "<h2>📋 Viagens Ativas</h2>";
    $sql = "SELECT id, tecnico_id, cliente, data_inicio, latitude_inicial, longitude_inicial, latitude_final, longitude_final, trajeto FROM viagens WHERE data_fim IS NULL";
    $stmt = $pdo->query($sql);
    $viagens = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    if (count($viagens) > 0) {
        echo "<table border='1' style='border-collapse: collapse; width: 100%;'>";
        echo "<tr><th>ID</th><th>Técnico</th><th>Cliente</th><th>Início</th><th>Lat Inicial</th><th>Lng Inicial</th><th>Lat Final</th><th>Lng Final</th><th>Pontos Trajeto</th></tr>";
        
        foreach ($viagens as $viagem) {
            $trajeto = json_decode($viagem['trajeto'], true);
            $pontos = is_array($trajeto) ? count($trajeto) : 0;
            
            echo "<tr>";
            echo "<td>{$viagem['id']}</td>";
            echo "<td>{$viagem['tecnico_id']}</td>";
            echo "<td>{$viagem['cliente']}</td>";
            echo "<td>{$viagem['data_inicio']}</td>";
            echo "<td>{$viagem['latitude_inicial']}</td>";
            echo "<td>{$viagem['longitude_inicial']}</td>";
            echo "<td>{$viagem['latitude_final']}</td>";
            echo "<td>{$viagem['longitude_final']}</td>";
            echo "<td>$pontos</td>";
            echo "</tr>";
        }
        echo "</table>";
    } else {
        echo "<p>❌ Nenhuma viagem ativa encontrada</p>";
    }
    
    // 2. Verificar rastreamento_tempo_real
    echo "<h2>📊 Tabela rastreamento_tempo_real</h2>";
    $sql = "SELECT COUNT(*) as total FROM rastreamento_tempo_real";
    $stmt = $pdo->query($sql);
    $total = $stmt->fetch(PDO::FETCH_ASSOC)['total'];
    
    echo "<p><strong>Total de registros:</strong> $total</p>";
    
    if ($total > 0) {
        $sql = "SELECT * FROM rastreamento_tempo_real ORDER BY timestamp_gps DESC LIMIT 5";
        $stmt = $pdo->query($sql);
        $ultimos = $stmt->fetchAll(PDO::FETCH_ASSOC);
        
        echo "<h3>Últimos 5 registros:</h3>";
        echo "<table border='1' style='border-collapse: collapse; width: 100%;'>";
        echo "<tr><th>ID</th><th>Viagem ID</th><th>Latitude</th><th>Longitude</th><th>Timestamp</th><th>Velocidade</th></tr>";
        
        foreach ($ultimos as $reg) {
            echo "<tr>";
            echo "<td>{$reg['id']}</td>";
            echo "<td>{$reg['viagem_id']}</td>";
            echo "<td>{$reg['latitude']}</td>";
            echo "<td>{$reg['longitude']}</td>";
            echo "<td>{$reg['timestamp_gps']}</td>";
            echo "<td>{$reg['velocidade']}</td>";
            echo "</tr>";
        }
        echo "</table>";
    }
    
    // 3. Testar endpoint atualizar-posicao
    echo "<h2>🧪 Teste do Endpoint atualizar-posicao</h2>";
    
    if (count($viagens) > 0) {
        $viagemTeste = $viagens[0];
        echo "<p>Testando com viagem ID: {$viagemTeste['id']}</p>";
        
        // Simular dados GPS
        $dadosTeste = [
            'viagem_id' => $viagemTeste['id'],
            'latitude' => -23.5505 + (rand(-100, 100) / 10000), // Variação pequena
            'longitude' => -46.6333 + (rand(-100, 100) / 10000), // Variação pequena
            'velocidade' => rand(0, 60),
            'precisao' => rand(5, 50),
            'altitude' => rand(700, 800),
            'motorista_nome' => 'Teste GPS',
            'battery_level' => rand(50, 100)
        ];
        
        echo "<p><strong>Dados de teste:</strong></p>";
        echo "<pre>" . json_encode($dadosTeste, JSON_PRETTY_PRINT) . "</pre>";
        
        // Fazer requisição POST
        $url = 'https://sistemas.pinheiroempresas.com.br/controlefrota/backend-php/api-simples-v2.php?acao=atualizar-posicao';
        
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($dadosTeste));
        curl_setopt($ch, CURLOPT_HTTPHEADER, [
            'Content-Type: application/json',
            'Content-Length: ' . strlen(json_encode($dadosTeste))
        ]);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_TIMEOUT, 30);
        
        $response = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        $error = curl_error($ch);
        curl_close($ch);
        
        echo "<h3>Resposta do endpoint:</h3>";
        echo "<p><strong>Código HTTP:</strong> $httpCode</p>";
        
        if ($error) {
            echo "<p style='color: red;'>❌ Erro cURL: $error</p>";
        } else {
            echo "<p><strong>Resposta:</strong></p>";
            echo "<pre>" . htmlspecialchars($response) . "</pre>";
            
            if ($httpCode == 200) {
                echo "<p style='color: green;'>✅ Endpoint funcionando!</p>";
            } else {
                echo "<p style='color: red;'>❌ Endpoint com erro</p>";
            }
        }
        
    } else {
        echo "<p>❌ Não há viagens ativas para testar</p>";
    }
    
    // 4. Verificar logs de erro
    echo "<h2>📝 Logs de Erro Recentes</h2>";
    $logFile = '/var/log/apache2/error.log'; // Ajustar caminho conforme necessário
    
    if (file_exists($logFile)) {
        $logs = file_get_contents($logFile);
        $linhas = explode("\n", $logs);
        $linhasRelevantes = array_filter($linhas, function($linha) {
            return strpos($linha, 'atualizar-posicao') !== false || 
                   strpos($linha, 'GPS') !== false ||
                   strpos($linha, 'viagem') !== false;
        });
        
        $ultimasLinhas = array_slice($linhasRelevantes, -10);
        
        if (!empty($ultimasLinhas)) {
            echo "<h3>Últimas 10 linhas relevantes:</h3>";
            echo "<pre style='background: #f5f5f5; padding: 10px; max-height: 300px; overflow-y: auto;'>";
            foreach ($ultimasLinhas as $linha) {
                echo htmlspecialchars($linha) . "\n";
            }
            echo "</pre>";
        } else {
            echo "<p>Nenhum log relevante encontrado</p>";
        }
    } else {
        echo "<p>Arquivo de log não encontrado: $logFile</p>";
    }
    
} catch (Exception $e) {
    echo "<p>❌ Erro: " . $e->getMessage() . "</p>";
}
?>

<style>
body { font-family: Arial, sans-serif; margin: 20px; }
h1 { color: #333; }
h2 { color: #666; margin-top: 30px; }
h3 { color: #888; }
table { margin: 10px 0; }
th { background: #f0f0f0; padding: 8px; }
td { padding: 6px; }
pre { background: #f9f9f9; border: 1px solid #ddd; padding: 10px; border-radius: 4px; }
</style>
