<?php
header('Content-Type: text/html; charset=utf-8');
?>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>🛠️ Diagnóstico: Trajeto no Mapa</title>
    <style>
        body { font-family: Arial, sans-serif; margin: 20px; background: #f5f5f5; }
        .container { max-width: 1200px; margin: 0 auto; background: white; padding: 20px; border-radius: 8px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); }
        .status { padding: 10px; border-radius: 5px; margin: 10px 0; }
        .success { background: #d4edda; color: #155724; border: 1px solid #c3e6cb; }
        .warning { background: #fff3cd; color: #856404; border: 1px solid #ffeaa7; }
        .error { background: #f8d7da; color: #721c24; border: 1px solid #f5c6cb; }
        .info { background: #d1ecf1; color: #0c5460; border: 1px solid #bee5eb; }
        table { width: 100%; border-collapse: collapse; margin: 10px 0; }
        th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
        th { background: #f8f9fa; }
        .btn { display: inline-block; padding: 8px 16px; background: #007bff; color: white; text-decoration: none; border-radius: 4px; margin: 5px; border: none; cursor: pointer; }
        .btn-success { background: #28a745; }
        .btn-warning { background: #ffc107; color: #212529; }
        .btn-danger { background: #dc3545; }
        pre { background: #f8f9fa; padding: 10px; border-radius: 4px; overflow-x: auto; }
    </style>
</head>
<body>
    <div class="container">
        <h1>🛠️ Diagnóstico: Problema do Trajeto no Mapa</h1>
        <p><strong>Problema relatado:</strong> No mapa só mostra o início e fim, não o tracejado azul de onde passou rua a rua.</p>
        
        <?php
        require_once 'config/database.php';

        try {
            $pdo = conectarBanco();
            echo "<div class='status success'>✅ Conexão com banco de dados estabelecida</div>";
        } catch (Exception $e) {
            echo "<div class='status error'>❌ Erro na conexão: " . $e->getMessage() . "</div>";
            exit;
        }

        // ETAPA 1: Verificar estrutura das tabelas
        echo "<h2>📋 1. Verificação da Estrutura</h2>";
        
        $tabelas = ['viagens', 'rastreamento_tempo_real'];
        foreach ($tabelas as $tabela) {
            try {
                $stmt = $pdo->query("SHOW TABLES LIKE '$tabela'");
                if ($stmt->rowCount() > 0) {
                    echo "<div class='status success'>✅ Tabela '$tabela' existe</div>";
                    
                    if ($tabela == 'rastreamento_tempo_real') {
                        $stmt = $pdo->query("SELECT COUNT(*) as total FROM $tabela");
                        $total = $stmt->fetch()['total'];
                        echo "<div class='status info'>📊 Total de pontos GPS: $total</div>";
                    }
                } else {
                    echo "<div class='status error'>❌ Tabela '$tabela' não existe!</div>";
                    
                    if ($tabela == 'rastreamento_tempo_real') {
                        echo "<div class='status warning'>⚠️ Sem esta tabela, o trajeto completo não pode ser exibido!</div>";
                    }
                }
            } catch (Exception $e) {
                echo "<div class='status error'>❌ Erro ao verificar '$tabela': " . $e->getMessage() . "</div>";
            }
        }

        // ETAPA 2: Verificar viagens recentes
        echo "<h2>🚗 2. Análise de Viagens Recentes</h2>";
        
        try {
            $stmt = $pdo->query("
                SELECT 
                    v.id,
                    v.cliente,
                    v.data_inicio,
                    v.data_fim,
                    v.latitude_inicial,
                    v.longitude_inicial,
                    v.latitude_final,
                    v.longitude_final,
                    CASE WHEN v.trajeto IS NOT NULL AND v.trajeto != '' THEN 'SIM' ELSE 'NÃO' END as tem_trajeto_json,
                    CASE WHEN v.trajeto IS NOT NULL AND v.trajeto != '' THEN 
                        JSON_LENGTH(v.trajeto) 
                    ELSE 0 END as pontos_trajeto_json
                FROM viagens v 
                WHERE v.data_inicio >= DATE_SUB(NOW(), INTERVAL 7 DAYS)
                ORDER BY v.id DESC 
                LIMIT 10
            ");
            
            $viagens = $stmt->fetchAll();
            
            if (count($viagens) > 0) {
                echo "<table>";
                echo "<tr><th>ID</th><th>Cliente</th><th>Data</th><th>GPS Inicial</th><th>GPS Final</th><th>Trajeto JSON</th><th>Pontos JSON</th><th>Ações</th></tr>";
                
                foreach ($viagens as $viagem) {
                    $temGps = !empty($viagem['latitude_inicial']) && !empty($viagem['longitude_inicial']);
                    $statusGps = $temGps ? '✅' : '❌';
                    
                    echo "<tr>";
                    echo "<td>{$viagem['id']}</td>";
                    echo "<td>{$viagem['cliente']}</td>";
                    echo "<td>" . date('d/m/Y H:i', strtotime($viagem['data_inicio'])) . "</td>";
                    echo "<td>$statusGps " . ($temGps ? substr($viagem['latitude_inicial'], 0, 8) . '...' : 'Sem GPS') . "</td>";
                    echo "<td>" . (!empty($viagem['latitude_final']) ? '✅ ' . substr($viagem['latitude_final'], 0, 8) . '...' : '❌ Sem GPS final') . "</td>";
                    echo "<td>{$viagem['tem_trajeto_json']}</td>";
                    echo "<td>{$viagem['pontos_trajeto_json']}</td>";
                    echo "<td><a href='?verificar_viagem={$viagem['id']}' class='btn btn-success'>Verificar</a></td>";
                    echo "</tr>";
                }
                echo "</table>";
            } else {
                echo "<div class='status warning'>⚠️ Nenhuma viagem encontrada nos últimos 7 dias</div>";
            }
            
        } catch (Exception $e) {
            echo "<div class='status error'>❌ Erro ao buscar viagens: " . $e->getMessage() . "</div>";
        }

        // ETAPA 3: Verificar dados GPS da tabela rastreamento_tempo_real
        echo "<h2>📡 3. Dados GPS Coletados</h2>";
        
        try {
            $stmt = $pdo->query("SHOW TABLES LIKE 'rastreamento_tempo_real'");
            if ($stmt->rowCount() > 0) {
                $stmt = $pdo->query("
                    SELECT 
                        viagem_id,
                        COUNT(*) as total_pontos,
                        MIN(timestamp_gps) as primeiro_ponto,
                        MAX(timestamp_gps) as ultimo_ponto,
                        MIN(latitude) as lat_min,
                        MAX(latitude) as lat_max,
                        MIN(longitude) as lng_min,
                        MAX(longitude) as lng_max
                    FROM rastreamento_tempo_real 
                    WHERE timestamp_gps >= DATE_SUB(NOW(), INTERVAL 7 DAYS)
                    GROUP BY viagem_id 
                    ORDER BY viagem_id DESC 
                    LIMIT 10
                ");
                
                $dadosGps = $stmt->fetchAll();
                
                if (count($dadosGps) > 0) {
                    echo "<table>";
                    echo "<tr><th>Viagem ID</th><th>Pontos GPS</th><th>Primeiro</th><th>Último</th><th>Área GPS</th><th>Status</th></tr>";
                    
                    foreach ($dadosGps as $dados) {
                        $status = $dados['total_pontos'] >= 5 ? '✅ Suficiente' : '⚠️ Poucos pontos';
                        $area = round(abs($dados['lat_max'] - $dados['lat_min']) * 111000, 0) . 'm × ' . 
                               round(abs($dados['lng_max'] - $dados['lng_min']) * 111000, 0) . 'm';
                        
                        echo "<tr>";
                        echo "<td>{$dados['viagem_id']}</td>";
                        echo "<td>{$dados['total_pontos']}</td>";
                        echo "<td>" . date('H:i', strtotime($dados['primeiro_ponto'])) . "</td>";
                        echo "<td>" . date('H:i', strtotime($dados['ultimo_ponto'])) . "</td>";
                        echo "<td>$area</td>";
                        echo "<td>$status</td>";
                        echo "</tr>";
                    }
                    echo "</table>";
                } else {
                    echo "<div class='status warning'>⚠️ Nenhum ponto GPS encontrado nos últimos 7 dias</div>";
                }
            } else {
                echo "<div class='status error'>❌ Tabela rastreamento_tempo_real não existe - este é o problema!</div>";
                echo "<div class='status info'>💡 Solução: Execute https://sistemas.pinheiroempresas.com.br/controlefrota/backend-php/api-simples-v2.php?acao=criar-tabelas para criar as tabelas necessárias</div>";
            }
        } catch (Exception $e) {
            echo "<div class='status error'>❌ Erro ao verificar dados GPS: " . $e->getMessage() . "</div>";
        }

        // ETAPA 4: Verificar viagem específica se solicitado
        if (isset($_GET['verificar_viagem'])) {
            $viagemId = intval($_GET['verificar_viagem']);
            echo "<h2>🔍 4. Análise Detalhada da Viagem $viagemId</h2>";
            
            try {
                // Buscar dados da viagem
                $stmt = $pdo->prepare("
                    SELECT 
                        v.*,
                        CASE WHEN v.trajeto IS NOT NULL AND v.trajeto != '' THEN 
                            JSON_LENGTH(v.trajeto) 
                        ELSE 0 END as pontos_json
                    FROM viagens v 
                    WHERE v.id = ?
                ");
                $stmt->execute([$viagemId]);
                $viagem = $stmt->fetch();
                
                if ($viagem) {
                    echo "<h3>📋 Dados da Viagem</h3>";
                    echo "<table>";
                    echo "<tr><th>Campo</th><th>Valor</th></tr>";
                    echo "<tr><td>Cliente</td><td>{$viagem['cliente']}</td></tr>";
                    echo "<tr><td>Data Início</td><td>{$viagem['data_inicio']}</td></tr>";
                    echo "<tr><td>Data Fim</td><td>" . ($viagem['data_fim'] ?: 'Em andamento') . "</td></tr>";
                    echo "<tr><td>GPS Inicial</td><td>{$viagem['latitude_inicial']}, {$viagem['longitude_inicial']}</td></tr>";
                    echo "<tr><td>GPS Final</td><td>" . ($viagem['latitude_final'] ? "{$viagem['latitude_final']}, {$viagem['longitude_final']}" : 'Não definido') . "</td></tr>";
                    echo "<tr><td>Pontos no JSON</td><td>{$viagem['pontos_json']}</td></tr>";
                    echo "</table>";
                    
                    // Verificar dados GPS da tabela rastreamento_tempo_real
                    try {
                        $stmt = $pdo->prepare("
                            SELECT 
                                COUNT(*) as total,
                                MIN(timestamp_gps) as primeiro,
                                MAX(timestamp_gps) as ultimo
                            FROM rastreamento_tempo_real 
                            WHERE viagem_id = ?
                        ");
                        $stmt->execute([$viagemId]);
                        $gpsData = $stmt->fetch();
                        
                        echo "<h3>📡 Dados GPS da Tabela rastreamento_tempo_real</h3>";
                        echo "<table>";
                        echo "<tr><th>Total de Pontos</th><th>Primeiro Ponto</th><th>Último Ponto</th></tr>";
                        echo "<tr><td>{$gpsData['total']}</td><td>{$gpsData['primeiro']}</td><td>{$gpsData['ultimo']}</td></tr>";
                        echo "</table>";
                        
                        if ($gpsData['total'] > 0) {
                            // Mostrar alguns pontos GPS
                            $stmt = $pdo->prepare("
                                SELECT latitude, longitude, timestamp_gps, velocidade 
                                FROM rastreamento_tempo_real 
                                WHERE viagem_id = ? 
                                ORDER BY timestamp_gps ASC 
                                LIMIT 10
                            ");
                            $stmt->execute([$viagemId]);
                            $pontos = $stmt->fetchAll();
                            
                            echo "<h3>📍 Primeiros 10 Pontos GPS</h3>";
                            echo "<table>";
                            echo "<tr><th>Timestamp</th><th>Latitude</th><th>Longitude</th><th>Velocidade</th></tr>";
                            foreach ($pontos as $ponto) {
                                echo "<tr>";
                                echo "<td>{$ponto['timestamp_gps']}</td>";
                                echo "<td>{$ponto['latitude']}</td>";
                                echo "<td>{$ponto['longitude']}</td>";
                                echo "<td>{$ponto['velocidade']} km/h</td>";
                                echo "</tr>";
                            }
                            echo "</table>";
                        } else {
                            echo "<div class='status warning'>⚠️ Nenhum ponto GPS encontrado para esta viagem na tabela rastreamento_tempo_real</div>";
                        }
                        
                    } catch (Exception $e) {
                        echo "<div class='status error'>❌ Erro ao buscar dados GPS: " . $e->getMessage() . "</div>";
                    }
                    
                    // Testar API para esta viagem
                    echo "<h3>🔗 Teste da API</h3>";
                    echo "<p>Testando se a API retorna os dados corretos para esta viagem:</p>";
                    
                    $apiUrl = "https://sistemas.pinheiroempresas.com.br/controlefrota/backend-php/api-simples-v2.php?acao=viagem&id=$viagemId";
                    echo "<p><strong>URL da API:</strong> <a href='$apiUrl' target='_blank'>$apiUrl</a></p>";
                    
                } else {
                    echo "<div class='status error'>❌ Viagem $viagemId não encontrada</div>";
                }
                
            } catch (Exception $e) {
                echo "<div class='status error'>❌ Erro ao analisar viagem: " . $e->getMessage() . "</div>";
            }
        }

        // ETAPA 5: Diagnóstico e soluções
        echo "<h2>🛠️ 5. Diagnóstico e Soluções</h2>";
        
        echo "<div class='status info'>";
        echo "<h3>💡 Possíveis Causas do Problema:</h3>";
        echo "<ol>";
        echo "<li><strong>Tabela rastreamento_tempo_real não existe:</strong> Os dados GPS não estão sendo armazenados</li>";
        echo "<li><strong>App não está enviando GPS:</strong> LocationForegroundService pode estar com problema</li>";
        echo "<li><strong>viagem_id incorreto:</strong> GPS sendo salvo com ID errado da viagem</li>";
        echo "<li><strong>Frontend não está usando dados corretos:</strong> Mapa não está lendo campo trajeto_gps</li>";
        echo "<li><strong>Dados existem mas em formato errado:</strong> Problema na estrutura JSON</li>";
        echo "</ol>";
        echo "</div>";
        
        echo "<div class='status success'>";
        echo "<h3>🔧 Soluções Disponíveis:</h3>";
        echo "<p><a href='https://sistemas.pinheiroempresas.com.br/controlefrota/backend-php/api-simples-v2.php?acao=criar-tabelas' class='btn btn-success'>Criar Tabelas GPS</a> - Criar tabelas rastreamento_tempo_real e status_tecnicos</p>";
        echo "<p><a href='https://sistemas.pinheiroempresas.com.br/controlefrota/backend-php/test-api-gps.php' class='btn btn-warning'>Testar API GPS</a> - Verificar se APIs estão funcionando</p>";
        echo "<p><a href='https://sistemas.pinheiroempresas.com.br/controlefrota/backend-php/inserir-trajeto-exemplo.php?viagem=75' class='btn btn-warning'>Inserir Dados de Teste</a> - Criar trajeto de exemplo</p>";
        echo "</div>";

        // ETAPA 6: Verificar se há dados nas últimas 24h
        echo "<h2>⏰ 6. Atividade GPS Recente (24h)</h2>";
        
        try {
            $stmt = $pdo->query("SHOW TABLES LIKE 'rastreamento_tempo_real'");
            if ($stmt->rowCount() > 0) {
                $stmt = $pdo->query("
                    SELECT 
                        COUNT(*) as total_pontos,
                        COUNT(DISTINCT viagem_id) as viagens_ativas,
                        MIN(timestamp_gps) as primeiro,
                        MAX(timestamp_gps) as ultimo
                    FROM rastreamento_tempo_real 
                    WHERE timestamp_gps >= DATE_SUB(NOW(), INTERVAL 24 HOUR)
                ");
                
                $atividade = $stmt->fetch();
                
                if ($atividade['total_pontos'] > 0) {
                    echo "<div class='status success'>";
                    echo "<p>✅ <strong>GPS Ativo:</strong> {$atividade['total_pontos']} pontos coletados nas últimas 24h</p>";
                    echo "<p>🚗 <strong>Viagens:</strong> {$atividade['viagens_ativas']} viagens com GPS</p>";
                    echo "<p>⏰ <strong>Período:</strong> " . date('d/m H:i', strtotime($atividade['primeiro'])) . " até " . date('d/m H:i', strtotime($atividade['ultimo'])) . "</p>";
                    echo "</div>";
                } else {
                    echo "<div class='status warning'>";
                    echo "<p>⚠️ <strong>Nenhum GPS coletado nas últimas 24h</strong></p>";
                    echo "<p>Isso indica que:</p>";
                    echo "<ul>";
                    echo "<li>Aplicativo Android não está enviando GPS</li>";
                    echo "<li>Serviço LocationForegroundService não está ativo</li>";
                    echo "<li>Problemas de conectividade</li>";
                    echo "</ul>";
                    echo "</div>";
                }
            }
        } catch (Exception $e) {
            echo "<div class='status error'>❌ Erro ao verificar atividade: " . $e->getMessage() . "</div>";
        }
        ?>
        
        <h2>📖 Como Resolver</h2>
        <div class="status info">
            <h3>🎯 Passos para Corrigir o Problema:</h3>
                         <ol>
                 <li><strong>Verificar se as tabelas existem:</strong> Execute <code>https://sistemas.pinheiroempresas.com.br/controlefrota/backend-php/api-simples-v2.php?acao=criar-tabelas</code></li>
                 <li><strong>Verificar se o app está enviando GPS:</strong> Inicie uma viagem no Android e verifique se aparecem pontos na tabela</li>
                 <li><strong>Verificar se o mapa está lendo os dados corretos:</strong> O frontend deve usar o campo <code>trajeto_gps</code> da API</li>
                 <li><strong>Testar com dados reais:</strong> Use uma viagem real e verifique se o trajeto aparece</li>
             </ol>
        </div>
        
        <div class="status warning">
            <h3>⚠️ Importante:</h3>
            <p>Se o problema persistir após verificar estes pontos, o problema pode estar no aplicativo Android não coletando/enviando GPS corretamente durante a viagem.</p>
        </div>
        
        <p><a href="?" class="btn">🔄 Atualizar Diagnóstico</a></p>
    </div>
</body>
</html> 
