0) { $premium_user_id = intval($_SESSION['user_id']); // Configuração de paginação $premium_items_per_page = 5; $premium_current_page = 1; if (isset($_GET['from']) && intval($_GET['from']) > 0) { $premium_current_page = ceil(intval($_GET['from']) / $premium_items_per_page) + 1; } $premium_from = ($premium_current_page - 1) * $premium_items_per_page; // Busca total de transações $premium_total_count = mr2number(sql_pr(" SELECT COUNT(*) FROM $config[tables_prefix]bill_transactions WHERE user_id = ? AND status_id IN (1, 2) ", $premium_user_id)); // Busca transações do usuário $premium_transactions = mr2array(sql_pr(" SELECT bt.transaction_id, bt.external_id, bt.status_id, bt.access_start_date, bt.access_end_date, bt.is_unlimited_access, bt.price, bt.currency_code, bt.duration_rebill, bt.added_date, bt.tokens_granted, COALESCE(cbp.title, 'Premium Access') as package_title, CASE WHEN bt.status_id = 1 THEN 'active' WHEN bt.status_id = 2 THEN 'closed' WHEN bt.status_id = 3 THEN 'cancelled' WHEN bt.status_id = 4 THEN 'pending' ELSE 'unknown' END as status_text, CASE WHEN bt.is_unlimited_access = 1 THEN -1 WHEN bt.access_end_date > NOW() THEN DATEDIFF(bt.access_end_date, NOW()) ELSE 0 END as days_remaining FROM $config[tables_prefix]bill_transactions bt LEFT JOIN $config[tables_prefix]card_bill_packages cbp ON bt.external_package_id = cbp.package_id WHERE bt.user_id = ? AND bt.status_id IN (1, 2) ORDER BY bt.access_start_date DESC LIMIT ?, ? ", $premium_user_id, $premium_from, $premium_items_per_page)); // Busca assinatura ativa atual $premium_active_subscription = mr2array_single(sql_pr(" SELECT bt.transaction_id, bt.access_start_date, bt.access_end_date, bt.is_unlimited_access, bt.price, bt.currency_code, COALESCE(cbp.title, 'Premium Access') as package_title, CASE WHEN bt.is_unlimited_access = 1 THEN -1 WHEN bt.access_end_date > NOW() THEN DATEDIFF(bt.access_end_date, NOW()) ELSE 0 END as days_remaining FROM $config[tables_prefix]bill_transactions bt LEFT JOIN $config[tables_prefix]card_bill_packages cbp ON bt.external_package_id = cbp.package_id WHERE bt.user_id = ? AND bt.status_id = 1 AND (bt.is_unlimited_access = 1 OR bt.access_end_date > NOW()) ORDER BY bt.access_end_date DESC LIMIT 1 ", $premium_user_id)); // Calcula estatísticas $premium_stats = mr2array_single(sql_pr(" SELECT COUNT(*) as total_transactions, COUNT(CASE WHEN status_id = 1 THEN 1 END) as active_transactions, COALESCE(SUM(CASE WHEN status_id IN (1, 2) THEN price ELSE 0 END), 0) as total_spent, MIN(access_start_date) as first_purchase_date FROM $config[tables_prefix]bill_transactions WHERE user_id = ? AND status_id IN (1, 2) ", $premium_user_id)); // Atribui variáveis para o template Smarty $smarty->assign('transactions', $premium_transactions); $smarty->assign('active_subscription', $premium_active_subscription); $smarty->assign('total_count', $premium_total_count); $smarty->assign('total_transactions', intval($premium_stats['total_transactions'])); $smarty->assign('active_transactions', intval($premium_stats['active_transactions'])); $smarty->assign('total_spent', floatval($premium_stats['total_spent'])); $smarty->assign('first_purchase_date', $premium_stats['first_purchase_date']); $smarty->assign('current_page', $premium_current_page); $smarty->assign('items_per_page', $premium_items_per_page); $smarty->assign('total_pages', ceil($premium_total_count / $premium_items_per_page)); }}