<?php
if (!defined('ALLOW_MANUAL_PPP_CUT_EXECUTION')) define('ALLOW_MANUAL_PPP_CUT_EXECUTION', true);
// admin/subscribers_ppp_toggle.php
// تنفيذ فصل/استعادة PPPoE عبر واجهة السوبر أدمن المنبثقة (super_admin_confirm)

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

if (function_exists('ensure_db')) ensure_db(true);

$conn = $GLOBALS['conn'] ?? null;
if (!($conn instanceof mysqli)) {
  http_response_code(500);
  die('Database connection error');
}

if (!function_exists('ua_ppp_toggle_execute')) {
  function ua_ppp_toggle_execute(mysqli $conn, int $id, string $a): array {
    $a = strtolower(trim($a));
    if ($id <= 0 || !in_array($a, ['cut','restore'], true)) {
      return ['ok'=>false, 'message'=>'Bad request'];
    }
    try {
      $result = bulk_execute_actions($conn, $a, [$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) {
        return ['ok'=>true, 'message'=>($a === 'cut' ? 'تم فصل المشترك بنجاح.' : 'تمت استعادة المشترك بنجاح.')];
      }
      return ['ok'=>false, 'message'=>(string)($result['message'] ?? 'فشل تنفيذ العملية')];
    } catch (Throwable $e) {
      return ['ok'=>false, 'message'=>'فشل تنفيذ العملية: ' . $e->getMessage()];
    }
  }
}

$ua_ppp_toggle_is_direct = isset($_SERVER['SCRIPT_FILENAME']) && realpath($_SERVER['SCRIPT_FILENAME']) === realpath(__FILE__);
if (!$ua_ppp_toggle_is_direct) {
  return;
}

// تأكيد السوبر أدمن قبل تنفيذ الزر الفردي.
require_super_admin_confirmation('فصل/استعادة');

$id = (int)($_GET['id'] ?? 0);
$a  = strtolower(trim((string)($_GET['a'] ?? '')));

if ($id <= 0 || !in_array($a, ['cut','restore'], true)) {
  http_response_code(400);
  die('Bad request');
}

$result = ua_ppp_toggle_execute($conn, $id, $a);
if (!empty($result['ok'])) {
  $_SESSION['flash_success'] = (string)$result['message'];
} else {
  $_SESSION['flash_warning'] = (string)($result['message'] ?? 'فشل تنفيذ العملية');
}

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