<?php
// Script para testar a query do dashboard
require_once 'config/database.php';

header('Content-Type: application/json');

try {
    $pdo = conectarBanco();
    
    echo "=== TESTE QUERY DASHBOARD ===\n\n";
    
    // 1. Testar a query exata do dashboard
    echo "1. QUERY EXATA DO DASHBOARD:\n";
    $stmt = $pdo->query("
        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,
            v.justificativa_divergencia,
            v.km_inicial 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,
            NULL as km_inicial,
            COALESCE(sr.km_estimado, 0) as km_final,
            COALESCE(sr.km_estimado, 0) 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,
            NULL as justificativa_divergencia,
            sr.km_estimado as km_planejado,
            NULL as 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,
            COALESCE(sr.km_estimado, 0) as distancia_total,
            COALESCE(sr.km_estimado, 0) as km_gps_final,
            sr.status 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', 'concluida')
        
        ORDER BY 
            CASE 
                WHEN data_inicio IS NOT NULL THEN data_inicio
                ELSE '1900-01-01'
            END DESC 
        LIMIT 20
    ");
    
    $resultado = $stmt->fetchAll();
    echo "Total de registros retornados: " . count($resultado) . "\n\n";
    
    foreach ($resultado as $item) {
        echo "- ID: {$item['id']}, Cliente: '{$item['cliente']}', Tipo: '{$item['tipo']}', Técnico: '{$item['tecnico_nome']}', Status: '{$item['rota_status']}'\n";
    }
    
    // 2. Verificar se há rotas em andamento
    echo "\n2. ROTAS EM ANDAMENTO:\n";
    $stmt = $pdo->query("
        SELECT 
            sr.id,
            sr.titulo,
            sr.status,
            sr.data_inicio_real,
            sr.data_fim_real,
            m.nome as motorista_nome
        FROM solicitacoes_rotas sr
        LEFT JOIN motoristas m ON sr.motorista_id = m.id
        WHERE sr.status IN ('aprovada', 'em_andamento', 'concluida')
        ORDER BY sr.id DESC
        LIMIT 5
    ");
    
    $rotas = $stmt->fetchAll();
    foreach ($rotas as $rota) {
        echo "- ID: {$rota['id']}, Título: '{$rota['titulo']}', Status: '{$rota['status']}', Motorista: '{$rota['motorista_nome']}'\n";
    }
    
    // 3. Verificar viagens que fazem parte de rotas
    echo "\n3. VIAGENS QUE FAZEM PARTE DE ROTAS:\n";
    $stmt = $pdo->query("
        SELECT 
            v.id,
            v.cliente,
            v.observacoes,
            rv.solicitacao_rota_id as rota_id
        FROM viagens v
        INNER JOIN rota_viagens rv ON v.id = rv.viagem_id
        ORDER BY v.id DESC
        LIMIT 5
    ");
    
    $viagensRota = $stmt->fetchAll();
    foreach ($viagensRota as $viagem) {
        echo "- ID: {$viagem['id']}, Cliente: '{$viagem['cliente']}', Rota: {$viagem['rota_id']}, Observações: '{$viagem['observacoes']}'\n";
    }
    
    echo "\n=== FIM DO TESTE ===\n";
    
} catch (Exception $e) {
    echo "❌ Erro: " . $e->getMessage() . "\n";
}
?>
