<?php
/**
 * Script de debug para identificar o problema na API de solicitações do gestor
 */

// Configuração
$url = 'https://sistemas.pinheiroempresas.com.br/controlefrota/backend-php/api/gestao/solicitacoes-gestor-app.php';
$token = 'admin123'; // Token do gestor "Geraldo"

echo "🔍 DEBUG DA API DE SOLICITAÇÕES DO GESTOR\n";
echo "==========================================\n\n";

// 1. Testar sem token
echo "1️⃣ Testando sem token:\n";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Accept: application/json']);

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

echo "   HTTP Code: $httpCode\n";
echo "   Resposta: " . substr($response, 0, 200) . "...\n\n";

// 2. Testar com token
echo "2️⃣ Testando com token:\n";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $token,
    'Accept: application/json'
]);

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

echo "   HTTP Code: $httpCode\n";
echo "   Resposta: " . substr($response, 0, 200) . "...\n\n";

// 3. Verificar se o token é válido
echo "3️⃣ Verificando token:\n";
$decoded = json_decode(base64_decode($token), true);
if ($decoded) {
    echo "   Token decodificado: " . json_encode($decoded) . "\n";
    echo "   ID: " . ($decoded['id'] ?? 'N/A') . "\n";
    echo "   Usuário: " . ($decoded['usuario'] ?? 'N/A') . "\n";
    echo "   Expira em: " . (isset($decoded['exp']) ? date('Y-m-d H:i:s', $decoded['exp']) : 'N/A') . "\n";
} else {
    echo "   ❌ Token não é um JWT válido\n";
}

echo "\n4️⃣ Verificando gestor no banco:\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->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    if ($decoded && isset($decoded['id']) && isset($decoded['usuario'])) {
        $sql = "SELECT id, nome, email, usuario, nivel_acesso, status 
                FROM gestores 
                WHERE id = ? AND usuario = ? AND (nivel_acesso = 'gestor' OR nivel_acesso = 'admin')
                AND status = 'ativo'";
        
        $stmt = $pdo->prepare($sql);
        $stmt->execute([$decoded['id'], $decoded['usuario']]);
        $gestor = $stmt->fetch(PDO::FETCH_ASSOC);
        
        if ($gestor) {
            echo "   ✅ Gestor encontrado: {$gestor['nome']} (ID: {$gestor['id']})\n";
            echo "   Status: {$gestor['status']}\n";
            echo "   Nível: {$gestor['nivel_acesso']}\n";
        } else {
            echo "   ❌ Gestor não encontrado\n";
        }
    } else {
        echo "   ❌ Token inválido para verificação\n";
    }
    
} catch (Exception $e) {
    echo "   ❌ Erro no banco: " . $e->getMessage() . "\n";
}

echo "\n5️⃣ Verificando solicitações pendentes:\n";
try {
    $sql = "SELECT COUNT(*) as total FROM solicitacoes_viagem WHERE status = 'pendente'";
    $stmt = $pdo->query($sql);
    $result = $stmt->fetch(PDO::FETCH_ASSOC);
    echo "   Total de solicitações pendentes: {$result['total']}\n";
    
    if ($decoded && isset($decoded['id'])) {
        $sql = "SELECT COUNT(*) as total FROM solicitacoes_viagem WHERE status = 'pendente' AND gestor_id = ?";
        $stmt = $pdo->prepare($sql);
        $stmt->execute([$decoded['id']]);
        $result = $stmt->fetch(PDO::FETCH_ASSOC);
        echo "   Solicitações do gestor ID {$decoded['id']}: {$result['total']}\n";
    }
    
} catch (Exception $e) {
    echo "   ❌ Erro ao verificar solicitações: " . $e->getMessage() . "\n";
}
?> 
