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

echo "<h1>🔍 Investigar Pontos GPS da Viagem #1</h1>";

try {
    $host = 'localhost';
    $dbname = 'pinheir3_controle_frotasV1.1';
    $username = 'pinheir3_admin';
    $password = '080880Gelboy';
    
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", $username, $password, [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    ]);
    
    echo "<h2>1️⃣ Verificando Viagem #1</h2>";
    
    // Buscar viagem
    $stmt = $pdo->prepare("SELECT * FROM viagens WHERE id = 1");
    $stmt->execute();
    $viagem = $stmt->fetch();
    
    if (!$viagem) {
        echo "<p style='color: red;'>❌ Viagem #1 não encontrada!</p>";
        exit;
    }
    
    echo "<p><strong>Viagem encontrada:</strong></p>";
    echo "<ul>";
    echo "<li><strong>ID:</strong> {$viagem['id']}</li>";
    echo "<li><strong>Cliente:</strong> {$viagem['cliente']}</li>";
    echo "<li><strong>Data Início:</strong> {$viagem['data_inicio']}</li>";
    echo "<li><strong>Data Fim:</strong> {$viagem['data_fim']}</li>";
    echo "<li><strong>KM Inicial:</strong> {$viagem['km_inicial']}</li>";
    echo "<li><strong>KM Final:</strong> {$viagem['km_final']}</li>";
    echo "<li><strong>KM Manual:</strong> " . ($viagem['km_final'] - $viagem['km_inicial']) . " km</li>";
    echo "<li><strong>KM GPS Atual:</strong> " . ($viagem['km_gps_final'] ?? 'NULL') . "</li>";
    echo "</ul>";
    
    echo "<h2>2️⃣ Verificando Pontos GPS</h2>";
    
    // Buscar pontos GPS da viagem
    $stmt = $pdo->prepare("
        SELECT latitude, longitude, timestamp, tecnico_id, velocidade, precisao
        FROM rastreamento_tempo_real 
        WHERE viagem_id = 1 
        ORDER BY timestamp ASC
    ");
    $stmt->execute();
    $pontos = $stmt->fetchAll();
    
    echo "<p><strong>Pontos GPS encontrados:</strong> " . count($pontos) . "</p>";
    
    if (count($pontos) > 0) {
        echo "<p><strong>Detalhes do ponto único:</strong></p>";
        $ponto = $pontos[0];
        echo "<ul>";
        echo "<li><strong>Latitude:</strong> {$ponto['latitude']}</li>";
        echo "<li><strong>Longitude:</strong> {$ponto['longitude']}</li>";
        echo "<li><strong>Timestamp:</strong> {$ponto['timestamp']}</li>";
        echo "<li><strong>Técnico ID:</strong> {$ponto['tecnico_id']}</li>";
        echo "<li><strong>Velocidade:</strong> {$ponto['velocidade']} km/h</li>";
        echo "<li><strong>Precisão:</strong> {$ponto['precisao']} m</li>";
        echo "</ul>";
    }
    
    echo "<h2>3️⃣ Verificando Outras Viagens</h2>";
    
    // Verificar outras viagens para comparação
    $stmt = $pdo->prepare("
        SELECT v.id, v.cliente, v.data_inicio, v.data_fim,
               COUNT(r.id) as pontos_gps,
               v.km_gps_final
        FROM viagens v
        LEFT JOIN rastreamento_tempo_real r ON v.id = r.viagem_id
        WHERE v.id IN (1, 2, 3)
        GROUP BY v.id
        ORDER BY v.id
    ");
    $stmt->execute();
    $outrasViagens = $stmt->fetchAll();
    
    echo "<p><strong>Comparação com outras viagens:</strong></p>";
    echo "<table border='1' style='border-collapse: collapse; margin: 10px 0;'>";
    echo "<tr><th>ID</th><th>Cliente</th><th>Data Início</th><th>Data Fim</th><th>Pontos GPS</th><th>KM GPS Final</th></tr>";
    
    foreach ($outrasViagens as $v) {
        echo "<tr>";
        echo "<td>{$v['id']}</td>";
        echo "<td>{$v['cliente']}</td>";
        echo "<td>{$v['data_inicio']}</td>";
        echo "<td>{$v['data_fim']}</td>";
        echo "<td>{$v['pontos_gps']}</td>";
        echo "<td>{$v['km_gps_final']}</td>";
        echo "</tr>";
    }
    echo "</table>";
    
    echo "<h2>4️⃣ Verificando Rastreamento por Técnico</h2>";
    
    // Verificar se há pontos GPS do mesmo técnico no mesmo período
    $stmt = $pdo->prepare("
        SELECT COUNT(*) as total_pontos,
               MIN(timestamp) as primeiro_ponto,
               MAX(timestamp) as ultimo_ponto
        FROM rastreamento_tempo_real 
        WHERE tecnico_id = ? 
        AND DATE(timestamp) = DATE(?)
    ");
    $stmt->execute([$viagem['tecnico_id'], $viagem['data_inicio']]);
    $rastreamentoTecnico = $stmt->fetch();
    
    echo "<p><strong>Rastreamento do técnico {$viagem['tecnico_id']} em {$viagem['data_inicio']}:</strong></p>";
    echo "<ul>";
    echo "<li><strong>Total de pontos:</strong> {$rastreamentoTecnico['total_pontos']}</li>";
    echo "<li><strong>Primeiro ponto:</strong> {$rastreamentoTecnico['primeiro_ponto']}</li>";
    echo "<li><strong>Último ponto:</strong> {$rastreamentoTecnico['ultimo_ponto']}</li>";
    echo "</ul>";
    
    echo "<h2>5️⃣ Análise do Problema</h2>";
    
    if (count($pontos) < 2) {
        echo "<div style='background: #fff3cd; padding: 15px; border-radius: 5px; border: 1px solid #ffeaa7;'>";
        echo "<h3>⚠️ PROBLEMA IDENTIFICADO:</h3>";
        echo "<p><strong>A viagem #1 tem apenas {$pontos[0]['pontos_gps']} ponto GPS!</strong></p>";
        echo "<p>Isso pode acontecer por:</p>";
        echo "<ul>";
        echo "<li>❌ <strong>GPS desligado</strong> durante a viagem</li>";
        echo "<li>❌ <strong>Problema de sincronização</strong> entre app e servidor</li>";
        echo "<li>❌ <strong>Viagem finalizada</strong> antes de capturar pontos GPS</li>";
        echo "<li>❌ <strong>Checklist pulado</strong> (como você mencionou)</li>";
        echo "</ul>";
        echo "</div>";
        
        echo "<h2>6️⃣ Soluções Possíveis</h2>";
        echo "<div style='background: #d4edda; padding: 15px; border-radius: 5px; border: 1px solid #c3e6cb;'>";
        echo "<h3>✅ SOLUÇÕES:</h3>";
        echo "<ol>";
        echo "<li><strong>Usar KM Manual como KM GPS:</strong> Como não há pontos GPS suficientes, usar o valor do odômetro</li>";
        echo "<li><strong>Verificar se há pontos GPS em outras tabelas</strong></li>";
        echo "<li><strong>Investigar logs do app Android</strong> para entender por que não capturou pontos</li>";
        echo "</ol>";
        echo "</div>";
        
        echo "<h2>7️⃣ Aplicando Solução</h2>";
        
        // Calcular KM baseado no odômetro
        $kmManual = $viagem['km_final'] - $viagem['km_inicial'];
        $kmGpsCorrigido = $kmManual * 1000; // Converter para metros
        
        echo "<p><strong>KM Manual calculado:</strong> {$kmManual} km</strong></p>";
        echo "<p><strong>KM GPS sugerido:</strong> {$kmGpsCorrigido} metros</strong></p>";
        
        // Atualizar km_gps_final com o valor do odômetro
        $stmt = $pdo->prepare("UPDATE viagens SET km_gps_final = ? WHERE id = 1");
        $stmt->execute([$kmGpsCorrigido]);
        
        if ($stmt->rowCount() > 0) {
            echo "<p style='color: green;'>✅ KM GPS atualizado com valor do odômetro!</p>";
            echo "<p><strong>Valor anterior:</strong> " . ($viagem['km_gps_final'] ?? 'NULL') . "</p>";
            echo "<p><strong>Valor novo:</strong> {$kmGpsCorrigido} metros ({$kmManual} km)</p>";
        } else {
            echo "<p style='color: red;'>❌ Erro ao atualizar KM GPS!</p>";
        }
    }
    
} catch (PDOException $e) {
    echo "<p style='color: red;'>❌ Erro de banco: " . $e->getMessage() . "</p>";
} catch (Exception $e) {
    echo "<p style='color: red;'>❌ Erro geral: " . $e->getMessage() . "</p>";
}
?>
