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

echo "🧪 TESTANDO API DO DASHBOARD\n";
echo "============================\n\n";

// 1. Testar a API diretamente
echo "📡 TESTANDO API: api-simples-v2.php?acao=viagens\n";
echo "URL: https://sistemas.pinheiroempresas.com.br/controlefrota/backend-php/api-simples-v2.php?acao=viagens\n\n";

$url = 'https://sistemas.pinheiroempresas.com.br/controlefrota/backend-php/api-simples-v2.php?acao=viagens';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_USERAGENT, 'ControleDeFretas/2.0');

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$error = curl_error($ch);
curl_close($ch);

echo "📊 RESPOSTA DA API:\n";
echo "  - HTTP Code: $httpCode\n";
echo "  - Erro cURL: " . ($error ?: 'Nenhum') . "\n";
echo "  - Tamanho da resposta: " . strlen($response) . " bytes\n\n";

if ($response) {
    $json = json_decode($response, true);
    if ($json) {
        echo "✅ JSON VÁLIDO:\n";
        echo "  - Sucesso: " . ($json['sucesso'] ? 'SIM' : 'NÃO') . "\n";
        echo "  - Mensagem: " . ($json['mensagem'] ?? 'N/A') . "\n";
        echo "  - Total de registros: " . count($json['dados'] ?? []) . "\n\n";
        
        if (isset($json['dados']) && is_array($json['dados'])) {
            echo "📋 REGISTROS ENCONTRADOS:\n";
            foreach ($json['dados'] as $i => $registro) {
                echo "  " . ($i + 1) . ". ID: {$registro['id']} | ";
                echo "Cliente: {$registro['cliente']} | ";
                echo "Tipo: {$registro['tipo']} | ";
                echo "Status: {$registro['rota_status']}\n";
            }
        } else {
            echo "❌ NENHUM DADO RETORNADO\n";
        }
    } else {
        echo "❌ JSON INVÁLIDO\n";
        echo "Resposta bruta:\n$response\n";
    }
} else {
    echo "❌ SEM RESPOSTA DA API\n";
}

echo "\n" . str_repeat("=", 50) . "\n\n";

// 2. Verificar diretamente no banco
echo "🔍 VERIFICANDO BANCO DIRETAMENTE:\n";

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,
    ]);
    
    // Verificar rota 24
    echo "📋 ROTA 24:\n";
    $stmt = $pdo->query("SELECT id, titulo, status, data_inicio_real FROM solicitacoes_rotas WHERE id = 24");
    $rota = $stmt->fetch();
    
    if ($rota) {
        echo "  - ID: {$rota['id']}\n";
        echo "  - Título: {$rota['titulo']}\n";
        echo "  - Status: '{$rota['status']}'\n";
        echo "  - Data início: " . ($rota['data_inicio_real'] ?: 'NULL') . "\n\n";
    } else {
        echo "  ❌ ROTA 24 NÃO ENCONTRADA!\n\n";
    }
    
    // Verificar viagens 198 e 199
    echo "🚗 VIAGENS 198 e 199:\n";
    $stmt = $pdo->query("SELECT id, cliente, data_inicio, data_fim FROM viagens WHERE id IN (198, 199)");
    $viagens = $stmt->fetchAll();
    
    foreach ($viagens as $viagem) {
        echo "  - ID {$viagem['id']}: {$viagem['cliente']}\n";
        echo "    Data início: {$viagem['data_inicio']}\n";
        echo "    Data fim: " . ($viagem['data_fim'] ?: 'NULL') . "\n";
        echo "    Status: " . ($viagem['data_fim'] ? 'finalizada' : 'em_andamento') . "\n\n";
    }
    
    // Testar query exata do dashboard
    echo "🧪 QUERY EXATA DO DASHBOARD:\n";
    $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,
            '' 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
        
        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_real, sr.km_estimado, 0) as km_final,
            COALESCE(sr.km_real, 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,
            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,
            COALESCE(sr.km_real, sr.km_estimado, 0) as distancia_total,
            COALESCE(sr.km_real, 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
    ";
    
    $stmt = $pdo->query($query);
    $resultados = $stmt->fetchAll();
    
    echo "  - Total de registros: " . count($resultados) . "\n";
    
    if (empty($resultados)) {
        echo "  ❌ NENHUM REGISTRO ENCONTRADO!\n\n";
    } else {
        echo "  ✅ REGISTROS ENCONTRADOS:\n";
        foreach ($resultados as $i => $r) {
            echo "    " . ($i + 1) . ". ID: {$r['id']} | ";
            echo "Cliente: {$r['cliente']} | ";
            echo "Tipo: {$r['tipo']} | ";
            echo "Status: {$r['rota_status']}\n";
        }
    }
    
} catch (Exception $e) {
    echo "❌ ERRO NO BANCO: " . $e->getMessage() . "\n";
}
?>
