<?php
/**
 * Teste Dashboard KM GPS
 * Verificar se os dados estão sendo retornados corretamente
 */

// Configurar UTF-8
header('Content-Type: text/html; charset=utf-8');

echo "<h1>🔍 Teste Dashboard KM GPS</h1>";

// Conectar ao banco
$host = 'localhost';
$dbname = 'pinheir3_controle_frotasV1.1';
$username = 'pinheir3_admin';
$password = '080880Gelboy';

try {
    $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 "<p>✅ Conectado ao banco de dados</p>";
    
    // 1. Verificar viagens com km_gps_final
    echo "<h2>📊 Viagens com km_gps_final</h2>";
    
    $sql = "SELECT id, cliente, km_inicial, km_final, km_gps_final, data_inicio, data_fim, observacoes 
            FROM viagens 
            WHERE km_gps_final IS NOT NULL AND km_gps_final > 0 
            ORDER BY data_inicio DESC 
            LIMIT 10";
    
    $stmt = $pdo->query($sql);
    $viagens = $stmt->fetchAll();
    
    if (count($viagens) > 0) {
        echo "<table border='1' style='border-collapse: collapse; width: 100%;'>";
        echo "<tr style='background: #f0f0f0;'>";
        echo "<th>ID</th><th>Cliente</th><th>KM Inicial</th><th>KM Final</th><th>KM GPS Final</th><th>Data Início</th><th>Data Fim</th><th>Observações</th>";
        echo "</tr>";
        
        foreach ($viagens as $viagem) {
            $kmManual = $viagem['km_final'] - $viagem['km_inicial'];
            $kmGpsKm = $viagem['km_gps_final'] / 1000; // Converter metros para km
            
            echo "<tr>";
            echo "<td>{$viagem['id']}</td>";
            echo "<td>{$viagem['cliente']}</td>";
            echo "<td>{$viagem['km_inicial']}</td>";
            echo "<td>{$viagem['km_final']}</td>";
            echo "<td style='background: #e8f5e8;'><strong>{$viagem['km_gps_final']} m ({$kmGpsKm} km)</strong></td>";
            echo "<td>{$viagem['data_inicio']}</td>";
            echo "<td>{$viagem['data_fim']}</td>";
            echo "<td>{$viagem['observacoes']}</td>";
            echo "</tr>";
        }
        echo "</table>";
    } else {
        echo "<p>❌ Nenhuma viagem com km_gps_final encontrada</p>";
    }
    
    // 2. Testar a query da API viagens
    echo "<h2>🔗 Teste API viagens</h2>";
    
    // Simular a query da API
    $sqlApi = "
        SELECT 
            v.id,
            v.cliente,
            v.motivo,
            v.tecnico_id,
            v.veiculo_id,
            v.km_inicial,
            v.km_final,
            v.km_gps_final,
            v.data_inicio,
            v.data_fim,
            v.latitude_inicial,
            v.longitude_inicial,
            v.latitude_final,
            v.longitude_final,
            v.endereco_inicial,
            v.endereco_final,
            v.observacoes,
            '' as justificativa_divergencia,
            NULL as km_planejado,
            NULL as diferenca_km_calculada,
            COALESCE(m.nome, 'Técnico não identificado') as tecnico_nome,
            COALESCE(m.matricula, 'N/A') as tecnico_matricula,
            COALESCE(ve.modelo, 'Veículo não identificado') as veiculo_nome,
            COALESCE(ve.placa, 'N/A') as veiculo_placa,
            CONCAT(COALESCE(ve.modelo, 'Veículo não identificado'), ' - ', COALESCE(ve.placa, 'N/A')) as veiculo_completo,
            'viagem' as tipo,
            v.id as rota_id,
            COALESCE(v.km_gps_final, 0) as distancia_total,
            COALESCE(v.km_gps_final, 0) as km_gps_final,
            CASE WHEN v.data_fim IS NULL THEN 'em_andamento' ELSE 'concluida' END as rota_status
        FROM viagens v
        LEFT JOIN motoristas m ON (v.tecnico_id = m.id OR v.tecnico_id = m.nome)
        LEFT JOIN veiculos ve ON v.veiculo_id = ve.id
        LEFT JOIN rota_viagens rv ON v.id = rv.viagem_id
        WHERE rv.viagem_id IS NULL -- EXCLUIR viagens que fazem parte de rotas
        
        UNION ALL
        
        SELECT 
            sr.id as id,
            sr.titulo as cliente,
            sr.descricao as motivo,
            sr.motorista_id as tecnico_id,
            sr.veiculo_id,
            (SELECT MIN(v.km_inicial) FROM viagens v INNER JOIN rota_viagens rv ON v.id = rv.viagem_id WHERE rv.solicitacao_rota_id = sr.id) as km_inicial,
            (SELECT MAX(v.km_final) FROM viagens v INNER JOIN rota_viagens rv ON v.id = rv.viagem_id WHERE rv.solicitacao_rota_id = sr.id) as km_final,
            CASE 
                WHEN sr.data_fim_real IS NOT NULL THEN (
                    SELECT SUM(v.km_gps_final) 
                    FROM viagens v 
                    INNER JOIN rota_viagens rv ON v.id = rv.viagem_id 
                    WHERE rv.solicitacao_rota_id = sr.id 
                    AND v.km_gps_final > 0
                )
                ELSE NULL 
            END as km_gps_final,
            sr.data_inicio_real as data_inicio,
            sr.data_fim_real as data_fim,
            NULL as latitude_inicial,
            NULL as longitude_inicial,
            NULL as latitude_final,
            NULL as longitude_final,
            'Múltiplos endereços' as endereco_inicial,
            'Múltiplos endereços' as endereco_final,
            sr.observacoes_finais as observacoes,
            sr.justificativa_km as justificativa_divergencia,
            sr.km_estimado as km_planejado,
            sr.diferenca_km_calculada,
            COALESCE(m.nome, 'Motorista não identificado') as tecnico_nome,
            COALESCE(m.matricula, 'N/A') as tecnico_matricula,
            COALESCE(ve.modelo, 'Veículo não identificado') as veiculo_nome,
            COALESCE(ve.placa, 'N/A') as veiculo_placa,
            CONCAT(COALESCE(ve.modelo, 'Veículo não identificado'), ' - ', COALESCE(ve.placa, 'N/A')) as veiculo_completo,
            'rota' as tipo,
            sr.id as rota_id,
            CASE 
                WHEN sr.data_fim_real IS NOT NULL THEN (
                    SELECT SUM(v.km_gps_final) 
                    FROM viagens v 
                    INNER JOIN rota_viagens rv ON v.id = rv.viagem_id 
                    WHERE rv.solicitacao_rota_id = sr.id 
                    AND v.km_gps_final > 0
                )
                ELSE NULL 
            END as distancia_total,
            CASE 
                WHEN sr.data_fim_real IS NOT NULL THEN (
                    SELECT AVG(v.km_gps_final) 
                    FROM viagens v 
                    INNER JOIN rota_viagens rv ON v.id = rv.viagem_id 
                    WHERE rv.solicitacao_rota_id = sr.id 
                    AND v.km_gps_final > 0
                )
                ELSE NULL 
            END as km_gps_final,
            CASE 
                WHEN sr.data_fim_real IS NOT NULL THEN 'concluida'
                WHEN sr.data_inicio_real IS NOT NULL THEN 'em_andamento'
                ELSE sr.status
            END as rota_status
        FROM solicitacoes_rotas sr
        LEFT JOIN motoristas m ON sr.motorista_id = m.id
        LEFT JOIN veiculos ve ON sr.veiculo_id = ve.id
        WHERE sr.status IN ('aprovada', 'em_andamento', 'em_execucao', 'concluida')
        
        ORDER BY 
            CASE 
                WHEN data_inicio IS NOT NULL THEN data_inicio
                ELSE '1900-01-01'
            END DESC 
        LIMIT 20
    ";
    
    $stmtApi = $pdo->query($sqlApi);
    $viagensApi = $stmtApi->fetchAll();
    
    echo "<p>📊 Total de registros retornados pela API: " . count($viagensApi) . "</p>";
    
    if (count($viagensApi) > 0) {
        echo "<table border='1' style='border-collapse: collapse; width: 100%;'>";
        echo "<tr style='background: #f0f0f0;'>";
        echo "<th>Tipo</th><th>ID</th><th>Cliente</th><th>KM GPS Final</th><th>Distância Total</th><th>Status</th>";
        echo "</tr>";
        
        foreach ($viagensApi as $viagem) {
            $kmGpsKm = $viagem['km_gps_final'] ? ($viagem['km_gps_final'] / 1000) : 0;
            $distanciaKm = $viagem['distancia_total'] ? ($viagem['distancia_total'] / 1000) : 0;
            
            echo "<tr>";
            echo "<td><strong>{$viagem['tipo']}</strong></td>";
            echo "<td>{$viagem['id']}</td>";
            echo "<td>{$viagem['cliente']}</td>";
            echo "<td style='background: #e8f5e8;'>{$viagem['km_gps_final']} m ({$kmGpsKm} km)</td>";
            echo "<td style='background: #fff3cd;'>{$viagem['distancia_total']} m ({$distanciaKm} km)</td>";
            echo "<td>{$viagem['rota_status']}</td>";
            echo "</tr>";
        }
        echo "</table>";
    }
    
    // 3. Verificar rotas específicas
    echo "<h2>🗺️ Rotas com viagens</h2>";
    
    $sqlRotas = "
        SELECT 
            sr.id as rota_id,
            sr.titulo as rota_titulo,
            sr.status as rota_status,
            sr.data_fim_real,
            COUNT(rv.viagem_id) as total_viagens,
            SUM(v.km_gps_final) as total_km_gps,
            AVG(v.km_gps_final) as media_km_gps
        FROM solicitacoes_rotas sr
        LEFT JOIN rota_viagens rv ON sr.id = rv.solicitacao_rota_id
        LEFT JOIN viagens v ON rv.viagem_id = v.id
        WHERE sr.status IN ('aprovada', 'em_andamento', 'em_execucao', 'concluida')
        GROUP BY sr.id
        ORDER BY sr.id DESC
        LIMIT 10
    ";
    
    $stmtRotas = $pdo->query($sqlRotas);
    $rotas = $stmtRotas->fetchAll();
    
    if (count($rotas) > 0) {
        echo "<table border='1' style='border-collapse: collapse; width: 100%;'>";
        echo "<tr style='background: #f0f0f0;'>";
        echo "<th>Rota ID</th><th>Título</th><th>Status</th><th>Data Fim</th><th>Total Viagens</th><th>Total KM GPS</th><th>Média KM GPS</th>";
        echo "</tr>";
        
        foreach ($rotas as $rota) {
            $totalKmGps = $rota['total_km_gps'] ? ($rota['total_km_gps'] / 1000) : 0;
            $mediaKmGps = $rota['media_km_gps'] ? ($rota['media_km_gps'] / 1000) : 0;
            
            echo "<tr>";
            echo "<td>{$rota['rota_id']}</td>";
            echo "<td>{$rota['rota_titulo']}</td>";
            echo "<td>{$rota['rota_status']}</td>";
            echo "<td>{$rota['data_fim_real']}</td>";
            echo "<td>{$rota['total_viagens']}</td>";
            echo "<td style='background: #e8f5e8;'>{$rota['total_km_gps']} m ({$totalKmGps} km)</td>";
            echo "<td style='background: #fff3cd;'>{$rota['media_km_gps']} m ({$mediaKmGps} km)</td>";
            echo "</tr>";
        }
        echo "</table>";
    }
    
} catch (Exception $e) {
    echo "<p>❌ Erro: " . $e->getMessage() . "</p>";
}
?>
