<?php
/**
 * Script para debugar erro 500 na API
 */

// Ativar exibição de erros
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

echo "<h1>🔍 Debug da API</h1>";

try {
    echo "<h2>📋 Teste 1: Verificar configuração do banco</h2>";
    
    // Incluir configuração do banco
    require_once 'config/database.php';
    
    echo "<p>✅ Arquivo de configuração carregado</p>";
    
    echo "<h2>📋 Teste 2: Testar conexão com banco</h2>";
    
    $pdo = Database::getConnection();
    echo "<p>✅ Conexão com banco estabelecida</p>";
    
    // Testar se as tabelas existem
    echo "<h2>📋 Teste 3: Verificar tabelas</h2>";
    
    $tabelas = ['solicitacoes_viagem', 'solicitacoes_rotas', 'gestores', 'motoristas', 'veiculos'];
    
    foreach ($tabelas as $tabela) {
        try {
            $stmt = $pdo->query("SELECT COUNT(*) as total FROM $tabela LIMIT 1");
            $result = $stmt->fetch();
            echo "<p>✅ Tabela <strong>$tabela</strong>: {$result['total']} registros</p>";
        } catch (Exception $e) {
            echo "<p>❌ Erro na tabela <strong>$tabela</strong>: " . $e->getMessage() . "</p>";
        }
    }
    
    echo "<h2>📋 Teste 4: Testar query principal</h2>";
    
    // Testar a query principal sem filtros
    $sql = "(
                SELECT 
                    sv.id,
                    sv.motivo,
                    sv.created_at as data_solicitacao,
                    sv.updated_at as data_resposta,
                    sv.status,
                    sv.prioridade,
                    sv.observacoes as justificativa,
                    sv.cliente,
                    m.nome as motorista,
                    v.modelo as veiculo,
                    v.placa as placa_veiculo,
                    g.nome as gestor,
                    'viagem' as tipo
                FROM solicitacoes_viagem sv
                LEFT JOIN gestores g ON sv.gestor_id = g.id
                LEFT JOIN motoristas m ON sv.tecnico_id = m.id
                LEFT JOIN veiculos v ON sv.veiculo_id = v.id
                WHERE sv.status IN ('aprovada', 'negada')
            )
            UNION ALL
            (
                SELECT 
                    sr.id,
                    COALESCE(sr.descricao, sr.titulo) as motivo,
                    sr.created_at as data_solicitacao,
                    sr.updated_at as data_resposta,
                    sr.status,
                    sr.prioridade,
                    '' as justificativa,
                    COALESCE(
                        (SELECT nome_cliente FROM rota_clientes WHERE solicitacao_rota_id = sr.id ORDER BY ordem_sequencia ASC, id ASC LIMIT 1),
                        sr.titulo
                    ) as cliente,
                    m.nome as motorista,
                    v.modelo as veiculo,
                    v.placa as placa_veiculo,
                    g.nome as gestor,
                    'rota' as tipo
                FROM solicitacoes_rotas sr
                LEFT JOIN gestores g ON sr.gestor_id = g.id
                LEFT JOIN motoristas m ON sr.motorista_id = m.id
                LEFT JOIN veiculos v ON sr.veiculo_id = v.id
                WHERE sr.status IN ('aprovada', 'negada')
            )
            ORDER BY data_resposta DESC, id DESC
            LIMIT 5";
    
    $stmt = $pdo->prepare($sql);
    $stmt->execute();
    $resultados = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    echo "<p>✅ Query principal executada com sucesso</p>";
    echo "<p>📊 Resultados encontrados: " . count($resultados) . "</p>";
    
    if (count($resultados) > 0) {
        echo "<h3>📋 Primeiros resultados:</h3>";
        echo "<pre>" . print_r($resultados, true) . "</pre>";
    }
    
    echo "<h2>📋 Teste 5: Testar query de estatísticas</h2>";
    
    $sqlStats = "(
                    SELECT 
                        COUNT(*) as total,
                        SUM(CASE WHEN sv.status = 'aprovada' THEN 1 ELSE 0 END) as aprovadas,
                        SUM(CASE WHEN sv.status = 'negada' THEN 1 ELSE 0 END) as negadas
                    FROM solicitacoes_viagem sv
                    LEFT JOIN gestores g ON sv.gestor_id = g.id
                    LEFT JOIN motoristas m ON sv.tecnico_id = m.id
                    LEFT JOIN veiculos v ON sv.veiculo_id = v.id
                    WHERE sv.status IN ('aprovada', 'negada')
                )
                UNION ALL
                (
                    SELECT 
                        COUNT(*) as total,
                        SUM(CASE WHEN sr.status = 'aprovada' THEN 1 ELSE 0 END) as aprovadas,
                        SUM(CASE WHEN sr.status = 'negada' THEN 1 ELSE 0 END) as negadas
                    FROM solicitacoes_rotas sr
                    LEFT JOIN gestores g ON sr.gestor_id = g.id
                    LEFT JOIN motoristas m ON sr.motorista_id = m.id
                    LEFT JOIN veiculos v ON sr.veiculo_id = v.id
                    WHERE sr.status IN ('aprovada', 'negada')
                )";
    
    $stmtStats = $pdo->prepare($sqlStats);
    $stmtStats->execute();
    $statsResults = $stmtStats->fetchAll(PDO::FETCH_ASSOC);
    
    echo "<p>✅ Query de estatísticas executada com sucesso</p>";
    echo "<pre>" . print_r($statsResults, true) . "</pre>";
    
    echo "<h2>✅ Todos os testes passaram!</h2>";
    echo "<p>🎉 A API deve estar funcionando corretamente</p>";
    
} catch (Exception $e) {
    echo "<h2>❌ Erro encontrado:</h2>";
    echo "<p><strong>Mensagem:</strong> " . $e->getMessage() . "</p>";
    echo "<p><strong>Arquivo:</strong> " . $e->getFile() . "</p>";
    echo "<p><strong>Linha:</strong> " . $e->getLine() . "</p>";
    echo "<p><strong>Trace:</strong></p>";
    echo "<pre>" . $e->getTraceAsString() . "</pre>";
}
?>
