<?php
// admin/subscribers_cancel.php (Cancel subscription)
// - Archives subscriber (is_deleted=1)
// - Disconnects active session (if any)
// - Removes PPP secret from MikroTik
// IMPORTANT: This is destructive on MikroTik.

if (session_status() === PHP_SESSION_NONE) session_start();

require_once __DIR__ . '/helpers.php';
require_once __DIR__ . '/auth.php';
require_once __DIR__ . '/db_bootstrap.php';
require_once __DIR__ . '/mikrotik_lib.php';
require_once __DIR__ . '/super_admin_guard.php';
require_once __DIR__ . '/subscriber_history_lib.php';
require_once __DIR__ . '/subscribers_bulk_action_lib.php';

require_login('index.php?login=1');
if (function_exists('require_perm')) require_perm('can_manage_subscribers');

// حماية إلغاء الاشتراك بكلمة مرور السوبر أدمن
require_super_admin_confirmation('إلغاء اشتراك مشترك');

if (function_exists('ensure_db')) ensure_db(true);
$conn = $GLOBALS['conn'] ?? null;
if(!$conn){ $_SESSION['flash_err']='DB connection failed'; header('Location: subscribers.php'); exit; }

$id = (int)($_GET['id'] ?? 0);
if($id<=0){ $_SESSION['flash_err']='ID غير صالح'; header('Location: subscribers.php'); exit; }

try {
  $result = bulk_execute_actions($conn, 'cancel', [$id], [
    'source' => 'single_page',
    'router_context' => 'إلغاء الاشتراك',
    'max_ids' => 1,
    'max_errors' => 1,
    'refresh_cache' => true,
    'message_prefix' => 'تم تنفيذ ',
  ]);
  if ((int)($result['changed'] ?? 0) > 0 && (int)($result['failed'] ?? 0) === 0) {
    $_SESSION['flash_ok'] = '✅ تم إلغاء الاشتراك وأرشفة المشترك وحُذف من MikroTik';
  } else {
    $_SESSION['flash_err'] = (string)($result['message'] ?? 'فشل إلغاء الاشتراك.');
  }
} catch (Throwable $e) {
  $_SESSION['flash_err'] = 'فشل إلغاء الاشتراك: ' . $e->getMessage();
}

header('Location: subscribers.php');
exit;
