<?php
/**
 * Ativação automática de plano após pagamento
 * Include este arquivo no início da página assinatura.php após verificar autenticação
 */

$paymentMessage = '';
$paymentMessageType = '';

// Processar retorno do gateway de pagamento
if (isset($_GET['status'])) {
    $status = $_GET['status'];
    $newPlanId = $_GET['plan'] ?? null;
    $paymentId = $_GET['payment_id'] ?? $_GET['collection_id'] ?? null;
    $collectionStatus = $_GET['collection_status'] ?? $status;
    
    // Pagamento aprovado
    if (($status === 'approved' || $status === 'success' || $collectionStatus === 'approved') && $newPlanId) {
        
        // Verificar se o plano existe
        $planCheckStmt = $pdo->prepare("SELECT * FROM plans WHERE id = ? AND is_active = 1");
        $planCheckStmt->execute([$newPlanId]);
        $newPlan = $planCheckStmt->fetch(PDO::FETCH_ASSOC);
        
        if ($newPlan) {
            // Atualizar o plano da loja
            $updateStmt = $pdo->prepare("
                UPDATE stores 
                SET plan_id = ?, status = 'active', updated_at = NOW() 
                WHERE id = ?
            ");
            $updateResult = $updateStmt->execute([$newPlanId, $storeId]);
            
            if ($updateResult) {
                // Atualizar a transação no banco se existir
                if ($paymentId) {
                    $updateTxStmt = $pdo->prepare("
                        UPDATE payment_transactions 
                        SET status = 'approved', paid_at = NOW() 
                        WHERE external_id = ? OR external_id LIKE ?
                    ");
                    $updateTxStmt->execute([$paymentId, '%' . $paymentId . '%']);
                }
                
                // Criar ou atualizar registro na tabela de subscriptions
                try {
                    // Verificar se já existe subscription
                    $existsStmt = $pdo->prepare("SELECT id FROM subscriptions WHERE store_id = ?");
                    $existsStmt->execute([$storeId]);
                    $existingSub = $existsStmt->fetch();
                    
                    if ($existingSub) {
                        $subStmt = $pdo->prepare("
                            UPDATE subscriptions 
                            SET plan_id = ?, status = 'active', updated_at = NOW() 
                            WHERE store_id = ?
                        ");
                        $subStmt->execute([$newPlanId, $storeId]);
                    } else {
                        $subStmt = $pdo->prepare("
                            INSERT INTO subscriptions (store_id, plan_id, status, started_at, created_at, updated_at)
                            VALUES (?, ?, 'active', NOW(), NOW(), NOW())
                        ");
                        $subStmt->execute([$storeId, $newPlanId]);
                    }
                } catch (Exception $e) {
                    // Tabela subscriptions pode não existir, ignorar
                    error_log("Subscriptions table error: " . $e->getMessage());
                }
                
                // Flash message de sucesso
                $_SESSION['flash_message'] = 'Parabéns! Seu plano foi atualizado para ' . htmlspecialchars($newPlan['name']) . ' com sucesso!';
                $_SESSION['flash_type'] = 'success';
                
                // Redirecionar para limpar os parâmetros da URL
                header('Location: /pages/assinatura.php');
                exit;
            }
        }
    } 
    // Pagamento falhou
    elseif ($status === 'failure' || $status === 'rejected' || $collectionStatus === 'rejected') {
        $paymentMessage = 'O pagamento não foi concluído. Por favor, tente novamente.';
        $paymentMessageType = 'error';
    } 
    // Pagamento pendente
    elseif ($status === 'pending' || $collectionStatus === 'pending' || $collectionStatus === 'in_process') {
        $paymentMessage = 'Seu pagamento está sendo processado. Você receberá uma confirmação em breve.';
        $paymentMessageType = 'warning';
    }
}

// Verificar mensagens flash da sessão
if (isset($_SESSION['flash_message'])) {
    $paymentMessage = $_SESSION['flash_message'];
    $paymentMessageType = $_SESSION['flash_type'] ?? 'success';
    unset($_SESSION['flash_message'], $_SESSION['flash_type']);
}
