<?php
/**
 * Debug do processo de aprovação de solicitações
 */

// Configuração do banco de dados
$dbConfig = [
    'host' => 'localhost',
    'port' => 3306,
    'database' => 'pinheir3_controle_frotasV1.1',
    'username' => 'pinheir3_admin',
    'password' => '080880Gelboy',
    'charset' => 'utf8mb4'
];

// Função para conectar ao banco
function getConnection() {
    global $dbConfig;
    
    try {
        $dsn = sprintf(
            'mysql:host=%s;port=%d;dbname=%s;charset=%s',
            $dbConfig['host'],
            $dbConfig['port'],
            $dbConfig['database'],
            $dbConfig['charset']
        );
        
        $pdo = new PDO($dsn, $dbConfig['username'], $dbConfig['password'], [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
            PDO::ATTR_EMULATE_PREPARES => false
        ]);
        
        return $pdo;
    } catch (PDOException $e) {
        throw $e;
    }
}

echo "🔍 Debug do processo de aprovação\n";
echo "===============================\n\n";

try {
    $pdo = getConnection();
    
    // 1. Verificar estrutura da tabela viagens
    echo "1️⃣ Verificando estrutura da tabela viagens:\n";
    $stmt = $pdo->query("DESCRIBE viagens");
    $colunas = $stmt->fetchAll();
    
    foreach ($colunas as $coluna) {
        echo "- " . $coluna['Field'] . " (" . $coluna['Type'] . ")\n";
    }
    
    echo "\n";
    
    // 2. Verificar solicitações pendentes
    echo "2️⃣ Verificando solicitações pendentes:\n";
    $stmt = $pdo->query("SELECT id, tecnico_id, veiculo_id, cliente, motivo, km_inicial, status FROM solicitacoes_viagem WHERE status = 'pendente'");
    $solicitacoes = $stmt->fetchAll();
    
    foreach ($solicitacoes as $sol) {
        echo "- ID: " . $sol['id'] . 
             ", Técnico: " . $sol['tecnico_id'] . 
             ", Cliente: " . $sol['cliente'] . 
             ", Status: " . $sol['status'] . "\n";
    }
    
    echo "\n";
    
    // 3. Simular processo de aprovação
    if (!empty($solicitacoes)) {
        $primeira = $solicitacoes[0];
        echo "3️⃣ Simulando aprovação da solicitação ID: " . $primeira['id'] . "\n";
        
        // Verificar se a solicitação existe
        $stmt = $pdo->prepare("SELECT * FROM solicitacoes_viagem WHERE id = ? AND status = 'pendente'");
        $stmt->execute([$primeira['id']]);
        $solicitacao = $stmt->fetch();
        
        if ($solicitacao) {
            echo "✅ Solicitação encontrada\n";
            
            // Verificar se conseguimos inserir na tabela viagens
            try {
                $sql = "INSERT INTO viagens (
                    tecnico_id, veiculo_id, cliente, motivo, km_inicial,
                    data_inicio, latitude_inicial, longitude_inicial,
                    endereco_inicial, cliente_id, observacoes, sincronizado
                ) VALUES (?, ?, ?, ?, ?, NOW(), ?, ?, ?, ?, ?, 1)";
                
                $stmt = $pdo->prepare($sql);
                $stmt->execute([
                    $solicitacao['tecnico_id'],
                    $solicitacao['veiculo_id'],
                    $solicitacao['cliente'],
                    $solicitacao['motivo'],
                    $solicitacao['km_inicial'],
                    $solicitacao['latitude_inicial'],
                    $solicitacao['longitude_inicial'],
                    $solicitacao['endereco_inicial'],
                    $solicitacao['cliente_id'],
                    'Viagem criada após aprovação da solicitação #' . $solicitacao['id']
                ]);
                
                $viagemId = $pdo->lastInsertId();
                echo "✅ Viagem criada com ID: $viagemId\n";
                
                // Limpar viagem de teste
                $pdo->exec("DELETE FROM viagens WHERE id = $viagemId");
                echo "🧹 Viagem de teste removida\n";
                
            } catch (Exception $e) {
                echo "❌ Erro ao criar viagem: " . $e->getMessage() . "\n";
            }
        } else {
            echo "❌ Solicitação não encontrada ou já processada\n";
        }
    }
    
} catch (Exception $e) {
    echo "❌ Erro geral: " . $e->getMessage() . "\n";
}
?> 
