<?php
/**
 * Gateway Helper - Checkout Pro 2025
 * 
 * Funções auxiliares para gerenciar múltiplos gateways de pagamento
 */

require_once __DIR__ . '/../config/config_db.php';

/**
 * Obtém configuração de um gateway
 * 
 * @param string $gateway Nome do gateway (mercadopago, stripe, paypal, pagarme)
 * @param string $key Chave da configuração
 * @return string|null Valor da configuração ou null
 */
function get_gateway_config($gateway, $key) {
    global $pdo;
    
    try {
        $config_key = $gateway . '_' . $key;
        $sql = "SELECT valor FROM configuracoes WHERE chave = :chave LIMIT 1";
        $stmt = $pdo->prepare($sql);
        $stmt->execute([':chave' => $config_key]);
        $result = $stmt->fetch(PDO::FETCH_ASSOC);
        
        return $result ? $result['valor'] : null;
    } catch (PDOException $e) {
        error_log("Erro ao buscar configuração do gateway: " . $e->getMessage());
        return null;
    }
}

/**
 * Verifica se um gateway está ativado
 * 
 * @param string $gateway Nome do gateway (mercadopago, stripe, paypal, pagarme)
 * @return bool
 */
function gateway_ativado($gateway) {
    $enabled = get_gateway_config($gateway, 'enabled');
    return $enabled === '1' || $enabled === 1;
}

/**
 * Salva configuração de um gateway
 * 
 * @param string $gateway Nome do gateway
 * @param string $key Chave da configuração
 * @param string $value Valor da configuração
 * @return bool
 */
function save_gateway_config($gateway, $key, $value) {
    global $pdo;
    
    try {
        $config_key = $gateway . '_' . $key;
        
        // Verificar se já existe
        $sql_check = "SELECT id FROM configuracoes WHERE chave = :chave LIMIT 1";
        $stmt_check = $pdo->prepare($sql_check);
        $stmt_check->execute([':chave' => $config_key]);
        $exists = $stmt_check->fetch(PDO::FETCH_ASSOC);
        
        if ($exists) {
            // Atualizar
            $sql = "UPDATE configuracoes SET valor = :valor, updated_at = NOW() WHERE chave = :chave";
            $stmt = $pdo->prepare($sql);
            $stmt->execute([':valor' => $value, ':chave' => $config_key]);
        } else {
            // Inserir
            $sql = "INSERT INTO configuracoes (chave, valor, created_at, updated_at) VALUES (:chave, :valor, NOW(), NOW())";
            $stmt = $pdo->prepare($sql);
            $stmt->execute([':chave' => $config_key, ':valor' => $value]);
        }
        
        return true;
    } catch (PDOException $e) {
        error_log("Erro ao salvar configuração do gateway: " . $e->getMessage());
        return false;
    }
}

/**
 * Obtém todas as configurações de um gateway
 * 
 * @param string $gateway Nome do gateway
 * @return array
 */
function get_all_gateway_config($gateway) {
    global $pdo;
    
    try {
        $prefix = $gateway . '_';
        $sql = "SELECT chave, valor FROM configuracoes WHERE chave LIKE :prefix";
        $stmt = $pdo->prepare($sql);
        $stmt->execute([':prefix' => $prefix . '%']);
        $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
        
        $config = [];
        foreach ($results as $row) {
            $key = str_replace($prefix, '', $row['chave']);
            $config[$key] = $row['valor'];
        }
        
        return $config;
    } catch (PDOException $e) {
        error_log("Erro ao buscar configurações do gateway: " . $e->getMessage());
        return [];
    }
}

/**
 * Lista gateways disponíveis e seus status
 * 
 * @return array
 */
function list_gateways_status() {
    return [
        'mercadopago' => [
            'nome' => 'Mercado Pago',
            'ativado' => gateway_ativado('mercadopago'),
            'suporta_cartao' => true,
            'suporta_pix' => true
        ],
        'stripe' => [
            'nome' => 'Stripe',
            'ativado' => gateway_ativado('stripe'),
            'suporta_cartao' => true,
            'suporta_pix' => false
        ],
        'paypal' => [
            'nome' => 'PayPal',
            'ativado' => gateway_ativado('paypal'),
            'suporta_cartao' => false,
            'suporta_pix' => false
        ],
        'pagarme' => [
            'nome' => 'Pagar.me',
            'ativado' => gateway_ativado('pagarme'),
            'suporta_cartao' => true,
            'suporta_pix' => true
        ]
    ];
}


