<?php
// Script para investigar a causa do KM GPS = 1
// URL: sistemas.pinheiroempresas.com.br/controlefrota/backend-php/investigar-causa-gps.php

header('Content-Type: text/html; charset=utf-8');
echo "<h1>🔍 Investigação - KM GPS = 1 Metro</h1>";

// Configuração do banco
$host = 'localhost';
$dbname = 'pinheir3_controle_frotasV1.1';
$username = 'pinheir3_admin';
$password = '080880Gelboy';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    echo "<p>✅ Conectado ao banco de dados</p>";
    
    // 1. Verificar todas as viagens com KM GPS = 1
    echo "<h2>📊 Viagens com KM GPS = 1:</h2>";
    $stmt = $pdo->prepare("SELECT id, tecnico_id, cliente, km_inicial, km_final, km_gps_final, data_inicio, data_fim, observacoes FROM viagens WHERE km_gps_final = 1 ORDER BY id DESC");
    $stmt->execute();
    $viagensProblema = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    if (empty($viagensProblema)) {
        echo "<p style='color: green;'>✅ Nenhuma viagem com KM GPS = 1 encontrada</p>";
    } else {
        echo "<p style='color: red;'>❌ Encontradas " . count($viagensProblema) . " viagens com KM GPS = 1</p>";
        echo "<table border='1' style='border-collapse: collapse; width: 100%;'>";
        echo "<tr style='background: #ffe6e6;'>";
        echo "<th>ID</th>";
        echo "<th>Técnico</th>";
        echo "<th>Cliente</th>";
        echo "<th>KM Manual</th>";
        echo "<th>Data</th>";
        echo "<th>Observações</th>";
        echo "</tr>";
        
        foreach ($viagensProblema as $viagem) {
            $kmManual = $viagem['km_final'] - $viagem['km_inicial'];
            echo "<tr>";
            echo "<td><strong>{$viagem['id']}</strong></td>";
            echo "<td>{$viagem['tecnico_id']}</td>";
            echo "<td>{$viagem['cliente']}</td>";
            echo "<td>{$kmManual} km</td>";
            echo "<td>{$viagem['data_inicio']}</td>";
            echo "<td>" . substr($viagem['observacoes'], 0, 50) . "...</td>";
            echo "</tr>";
        }
        echo "</table>";
    }
    
    // 2. Verificar viagens com KM GPS = 0
    echo "<h2>📊 Viagens com KM GPS = 0:</h2>";
    $stmt = $pdo->prepare("SELECT COUNT(*) as total FROM viagens WHERE km_gps_final = 0");
    $stmt->execute();
    $resultado = $stmt->fetch(PDO::FETCH_ASSOC);
    echo "<p>Viagens com KM GPS = 0: <strong>{$resultado['total']}</strong></p>";
    
    // 3. Verificar viagens com KM GPS NULL
    echo "<h2>📊 Viagens com KM GPS NULL:</h2>";
    $stmt = $pdo->prepare("SELECT COUNT(*) as total FROM viagens WHERE km_gps_final IS NULL");
    $stmt->execute();
    $resultado = $stmt->fetch(PDO::FETCH_ASSOC);
    echo "<p>Viagens com KM GPS NULL: <strong>{$resultado['total']}</strong></p>";
    
    // 4. Verificar distribuição de KM GPS
    echo "<h2>📊 Distribuição de KM GPS:</h2>";
    $stmt = $pdo->query("SELECT 
        CASE 
            WHEN km_gps_final = 0 THEN '0 metros'
            WHEN km_gps_final = 1 THEN '1 metro'
            WHEN km_gps_final IS NULL THEN 'NULL'
            WHEN km_gps_final < 100 THEN 'Menos de 100m'
            WHEN km_gps_final < 1000 THEN '100m a 1km'
            WHEN km_gps_final < 10000 THEN '1km a 10km'
            ELSE 'Mais de 10km'
        END as categoria,
        COUNT(*) as total
        FROM viagens 
        GROUP BY categoria 
        ORDER BY total DESC");
    $distribuicao = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    echo "<table border='1' style='border-collapse: collapse; width: 100%;'>";
    echo "<tr style='background: #f0f0f0;'>";
    echo "<th>Categoria</th>";
    echo "<th>Total</th>";
    echo "</tr>";
    
    foreach ($distribuicao as $cat) {
        $cor = ($cat['categoria'] == '1 metro') ? 'red' : 'black';
        echo "<tr>";
        echo "<td style='color: {$cor};'>{$cat['categoria']}</td>";
        echo "<td>{$cat['total']}</td>";
        echo "</tr>";
    }
    echo "</table>";
    
    // 5. Verificar viagens recentes (últimas 10)
    echo "<h2>📊 Últimas 10 Viagens:</h2>";
    $stmt = $pdo->query("SELECT id, tecnico_id, cliente, km_inicial, km_final, km_gps_final, data_inicio FROM viagens ORDER BY id DESC LIMIT 10");
    $viagensRecentes = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    echo "<table border='1' style='border-collapse: collapse; width: 100%;'>";
    echo "<tr style='background: #f0f0f0;'>";
    echo "<th>ID</th>";
    echo "<th>Técnico</th>";
    echo "<th>Cliente</th>";
    echo "<th>KM Manual</th>";
    echo "<th>KM GPS</th>";
    echo "<th>Data</th>";
    echo "</tr>";
    
    foreach ($viagensRecentes as $viagem) {
        $kmManual = $viagem['km_final'] - $viagem['km_inicial'];
        $kmGpsKm = $viagem['km_gps_final'] ? ($viagem['km_gps_final'] / 1000) : 0;
        $cor = ($viagem['km_gps_final'] == 1) ? 'red' : 'black';
        
        echo "<tr>";
        echo "<td><strong>{$viagem['id']}</strong></td>";
        echo "<td>{$viagem['tecnico_id']}</td>";
        echo "<td>{$viagem['cliente']}</td>";
        echo "<td>{$kmManual} km</td>";
        echo "<td style='color: {$cor};'>{$kmGpsKm} km ({$viagem['km_gps_final']} m)</td>";
        echo "<td>{$viagem['data_inicio']}</td>";
        echo "</tr>";
    }
    echo "</table>";
    
    // 6. Análise de possíveis causas
    echo "<h2>🔍 Análise de Possíveis Causas:</h2>";
    echo "<ul>";
    echo "<li><strong>Problema no App Android:</strong> Pode estar enviando KM GPS = 1 quando há erro</li>";
    echo "<li><strong>Problema na API:</strong> Pode estar salvando valor padrão incorreto</li>";
    echo "<li><strong>Problema no cálculo:</strong> Pode estar calculando errado no backend</li>";
    echo "<li><strong>Problema de sincronização:</strong> Pode estar perdendo dados do GPS</li>";
    echo "</ul>";
    
    echo "<h2>🎯 Próximos Passos:</h2>";
    echo "<ol>";
    echo "<li>Verificar o código do app Android que envia KM GPS</li>";
    echo "<li>Verificar a API que recebe e salva KM GPS</li>";
    echo "<li>Criar correção automática para viagens futuras</li>";
    echo "<li>Corrigir viagens existentes com problema</li>";
    echo "</ol>";
    
} catch (PDOException $e) {
    echo "<p style='color: red;'>❌ Erro no banco de dados: " . $e->getMessage() . "</p>";
}
?>
