<?php
require_once __DIR__ . '/auth.php';
require_once __DIR__ . '/billing.php';
require_once __DIR__ . '/config.php';

// Verifica autenticación y prepara usuario/DB. 
$auth = getAuth();
$auth->requireAuth();
$user = $auth->getCurrentUser();
$db = getDatabaseConnection();

$sub = getUserSubscription($db, $user['id']);
if (!$sub || empty($sub['stripe_customer_id'])) {
    header('Location: subscription?message=' . urlencode('No hay cliente de Stripe asociado. Suscríbete primero.'));
    exit;
}

// Crea la sesión del portal de facturación de Stripe y redirige al usuario.
try {
    $returnUrl = rtrim(BASE_URL, '/') . '/subscription';
    $portal = stripeRequest('POST', '/billing_portal/sessions', [
        'customer' => $sub['stripe_customer_id'],
        'return_url' => $returnUrl,
    ]);
    if (!empty($portal['url'])) {
        header('Location: ' . $portal['url']);
        exit;
    }
    throw new Exception('Respuesta inválida al crear portal');
} catch (Throwable $e) {
    error_log('Stripe Portal error: ' . $e->getMessage());
    header('Location: subscription?message=' . urlencode('No se pudo abrir el portal de facturación.'));
} 
