<?php
$page_title = 'إعدادات البرنامج';

if (isset($_GET['embed']) && $_GET['embed']=='1') { if(!defined('UA_EMBED')) define('UA_EMBED', true); }

$UA_FORCE_DESIGN_V2 = true;
$uaAndroidAppSettings = ((string)($_GET['ua_android'] ?? '') === '1') || stripos((string)($_SERVER['HTTP_USER_AGENT'] ?? ''), 'NetworkCustomersAndroid/') !== false;
$UA_PAGE_CSS = $uaAndroidAppSettings
  ? ['assets/css/android_app_settings.css']
  : ['assets/css/app_settings.css'];
require_once __DIR__ . '/header.php';
if (!defined('UA_EMBED') || !UA_EMBED) require_once __DIR__ . '/sidebar.php';
require_once __DIR__ . '/helpers.php';
require_once __DIR__ . '/auth.php';
require_once __DIR__ . '/lang.php';
require_once __DIR__ . '/subscribers_lib.php';

require_login();

/**
 * ✅ صلاحيات: يدعم كل المشاريع
 * - require_permission()
 * - require_perm()
 * - أو بدون صلاحيات (لا يمنع)
 */
if (function_exists('require_permission')) {
  require_permission('can_manage_settings');
} elseif (function_exists('require_perm')) {
  require_perm('can_manage_settings');
}

$msg = '';
$err = '';

$conn = $GLOBALS['conn'] ?? null;
if (!($conn instanceof mysqli)) {
  echo "<div class='content-wrapper'><section class='content p-3'><div class='alert alert-danger'>" . h(t('خطأ: اتصال قاعدة البيانات غير جاهز.')) . "</div></section></div>";
  require_once __DIR__ . '/footer.php';
  exit;
}

$installType = function_exists('ua_install_type') ? ua_install_type() : 'server';
$isServerInstall = $installType === 'server';
$pppoeDefaultSuffix = subs_policy_default_pppoe_domain();

// حفظ
if(isset($_POST['save'])){
  $ui_lang = $_POST['ui_lang'] ?? 'ar';
  $currency_default = $_POST['currency_default'] ?? 'SYP';
  $currency_show_usd = isset($_POST['currency_show_usd']) ? '1' : '0';
  $usd_rate = trim($_POST['usd_rate'] ?? '12000');
  $previousPppoeSuffix = subs_policy_pppoe_domain($conn);
  $pppoe_account_suffix = subs_policy_normalize_pppoe_domain((string)($_POST['pppoe_account_suffix'] ?? $pppoeDefaultSuffix));
  $pppoe_suffix_valid = $pppoe_account_suffix !== '';

  // ✅ إعدادات كروت الإنترنت (QR)
  $voucher_qr_mode = $_POST['voucher_qr_mode'] ?? 'code_pass';
  $allowed_modes = ['code_only','code_pass','hotspot_url'];
  if (!in_array($voucher_qr_mode, $allowed_modes, true)) {
    $voucher_qr_mode = 'code_pass';
  }
  $voucher_qr_hotspot_url = trim($_POST['voucher_qr_hotspot_url'] ?? '');
  $voucher_qr_paid_only = isset($_POST['voucher_qr_paid_only']) ? '1' : '0';

  // ✅ إعدادات تفعيل الكروت على MikroTik + جهاز واحد
  $voucher_auto_mt_on_payment = isset($_POST['voucher_auto_mt_on_payment']) ? '1' : '0';
  $voucher_auto_mt_on_redeem = isset($_POST['voucher_auto_mt_on_redeem']) ? '1' : '0';
  $voucher_single_device = isset($_POST['voucher_single_device']) ? '1' : '0';
  $voucher_hotspot_profile = trim($_POST['voucher_hotspot_profile'] ?? 'voucher');
  $invoice_send_paid_message = isset($_POST['invoice_send_paid_message']) ? '1' : '0';
  $invoice_auto_print_on_payment = isset($_POST['invoice_auto_print_on_payment']) ? '1' : '0';

  // ✅ منع مشاركة الكرت: قفل مؤقت عند محاولة الدخول من جهاز آخر (مدد: 1,5,10,30)
  $voucher_device_lock_enabled = isset($_POST['voucher_device_lock_enabled']) ? '1' : '0';
  // ثابت حسب طلب العميل — يطبّق على RouterOS (Scheduler) عند المخالفة
  $voucher_device_lock_steps = '1,5,10,30';

  // ✅ عدد مرات تبديل الجهاز المسموح لكل كرت (افتراضي 1)
  $voucher_device_reset_max = (int)($_POST['voucher_device_reset_max'] ?? 1);
  if ($voucher_device_reset_max < 0) $voucher_device_reset_max = 0;
  if ($voucher_device_reset_max > 5) $voucher_device_reset_max = 5;

  $idle_timeout_enabled = isset($_POST['idle_timeout_enabled']);
  $idle_timeout_minutes = (int)($_POST['idle_timeout_minutes'] ?? 30);
  if ($idle_timeout_minutes < 5) $idle_timeout_minutes = 5;
  if ($idle_timeout_minutes > 1440) $idle_timeout_minutes = 1440;

  if (!$pppoe_suffix_valid) {
    $err = 'لاحقة حساب PPPoE غير صالحة. اكتبها مثل '.$pppoeDefaultSuffix.' من دون علامة @.';
  } elseif(!is_numeric($usd_rate) || floatval($usd_rate) <= 0){
    $err = t('سعر الصرف غير صحيح');
  } else {
    $idleConfigError = '';
    $idleConfigSaved = function_exists('ua_save_install_config')
      && ua_save_install_config([
        'security' => [
          'idle_timeout_enabled' => $idle_timeout_enabled,
          'idle_timeout_minutes' => $idle_timeout_minutes,
        ],
      ], $idleConfigError);
    if (!$idleConfigSaved) {
      $err = 'تعذر حفظ إعدادات مهلة عدم النشاط محليًا: ' . ($idleConfigError !== '' ? $idleConfigError : 'ملف إعداد النسخة غير قابل للكتابة.');
    }

    if ($idleConfigSaved) {
    set_app_setting($conn,'ui_lang',$ui_lang);
    set_app_setting($conn,'currency_default',$currency_default);
    set_app_setting($conn,'currency_show_usd',$currency_show_usd);
    set_app_setting($conn,'usd_rate',$usd_rate);
    set_app_setting($conn,'pppoe_account_suffix',$pppoe_account_suffix);

    set_app_setting($conn,'voucher_qr_mode',$voucher_qr_mode);
    set_app_setting($conn,'voucher_qr_hotspot_url',$voucher_qr_hotspot_url);
    set_app_setting($conn,'voucher_qr_paid_only',$voucher_qr_paid_only);

    set_app_setting($conn,'voucher_auto_mt_on_payment',$voucher_auto_mt_on_payment);
    set_app_setting($conn,'voucher_auto_mt_on_redeem',$voucher_auto_mt_on_redeem);
    set_app_setting($conn,'voucher_single_device',$voucher_single_device);
    set_app_setting($conn,'voucher_hotspot_profile',$voucher_hotspot_profile);
    set_app_setting($conn,'invoice_send_paid_message',$invoice_send_paid_message);
    set_app_setting($conn,'invoice_auto_print_on_payment',$invoice_auto_print_on_payment);

    set_app_setting($conn,'voucher_device_lock_enabled',$voucher_device_lock_enabled);
    set_app_setting($conn,'voucher_device_lock_steps',$voucher_device_lock_steps);
    set_app_setting($conn,'voucher_device_reset_max',(string)$voucher_device_reset_max);
    $msg = t('تم حفظ الإعدادات بنجاح ✅');
    if (strcasecmp($previousPppoeSuffix, $pppoe_account_suffix) !== 0) {
      $msg .= ' تغيّرت لاحقة PPPoE؛ الحسابات الفعلية لم تتغير، وأي بيانات تشفير مجهزة باللاحقة السابقة ستتطلب إعادة التجهيز.';
    }
    }
  }
}

// تحميل
$ui_lang = get_app_setting($conn,'ui_lang', $_SESSION['ui_lang'] ?? 'ar');
$currency_default = get_app_setting($conn,'currency_default','SYP');
$currency_show_usd = get_app_setting($conn,'currency_show_usd','1');
$usd_rate = get_app_setting($conn,'usd_rate','12000');
$pppoe_account_suffix = subs_policy_pppoe_domain($conn);

// ✅ إعدادات كروت الإنترنت (QR)
$voucher_qr_mode = get_app_setting($conn,'voucher_qr_mode','code_pass');
$voucher_qr_hotspot_url = get_app_setting($conn,'voucher_qr_hotspot_url','');
$voucher_qr_paid_only = get_app_setting($conn,'voucher_qr_paid_only','1');

$voucher_auto_mt_on_payment = get_app_setting($conn,'voucher_auto_mt_on_payment','1');
$voucher_auto_mt_on_redeem = get_app_setting($conn,'voucher_auto_mt_on_redeem','1');
$voucher_single_device = get_app_setting($conn,'voucher_single_device','1');
$voucher_hotspot_profile = get_app_setting($conn,'voucher_hotspot_profile','voucher');
$invoice_send_paid_message = get_app_setting($conn,'invoice_send_paid_message','0');
$invoice_auto_print_on_payment = get_app_setting($conn,'invoice_auto_print_on_payment','0');

$voucher_device_lock_enabled = get_app_setting($conn,'voucher_device_lock_enabled','1');
$voucher_device_lock_steps = get_app_setting($conn,'voucher_device_lock_steps','1,5,10,30');
$voucher_device_reset_max = get_app_setting($conn,'voucher_device_reset_max','1');

$idleTimeoutPolicy = function_exists('ua_idle_timeout_policy')
  ? ua_idle_timeout_policy()
  : ['enabled' => false, 'minutes' => 30];
$idle_timeout_enabled = !empty($idleTimeoutPolicy['enabled']);
$idle_timeout_minutes = (int)($idleTimeoutPolicy['minutes'] ?? 30);

$active_tab = 'app';
if ($uaAndroidAppSettings) { require __DIR__ . '/android_app_settings.php'; require_once __DIR__ . '/footer.php'; return; }
?>

<div class="content-wrapper ua-extracted-page">
  <section class="content-header">
    <div class="container-fluid d-flex justify-content-between align-items-center">
      <h1 class="mb-0"><?= t('إعدادات البرنامج') ?></h1>
      <a class="btn btn-primary" href="output_devices.php"><i class="fa fa-print"></i> الطابعات والماسحات</a>
    </div>
  </section>

  <section class="content">
    <div class="container-fluid">
      <?php if (!defined('UA_EMBED') || !UA_EMBED) require __DIR__ . '/settings_tabs.php'; ?>

      <?php if($msg){ ?><div class="alert alert-success"><?= h($msg) ?></div><?php } ?>
      <?php if($err){ ?><div class="alert alert-danger"><?= h($err) ?></div><?php } ?>

      <div class="card">
        <div class="card-body">

          <form method="post">

            <div class="row">
              <div class="col-md-4">
                <label><?= t('اللغة') ?></label>
                <select class="form-control" name="ui_lang">
                  <option value="ar" <?= $ui_lang==='ar'?'selected':'' ?>><?= t('العربية') ?></option>
                  <option value="en" <?= $ui_lang==='en'?'selected':'' ?>><?= t('English') ?></option>
                </select>
              </div>

              <div class="col-md-4">
                <label><?= t('العملة الافتراضية') ?></label>
                <select class="form-control" name="currency_default">
                  <option value="SYP" <?= $currency_default==='SYP'?'selected':'' ?>><?= t('SYP - ليرة سورية') ?></option>
                  <option value="USD" <?= $currency_default==='USD'?'selected':'' ?>><?= t('USD - دولار') ?></option>
                </select>
              </div>

              <div class="col-md-4">
                <label><?= t('سعر صرف الدولار مقابل الليرة') ?></label>
                <input type="number" class="form-control" name="usd_rate" value="<?= h($usd_rate) ?>" step="1" min="1">
              </div>
            </div>

            <div class="row mt-3">
              <div class="col-md-6">
                <label>لاحقة حساب PPPoE التلقائي</label>
                <div class="input-group" dir="ltr">
                  <div class="input-group-prepend"><span class="input-group-text">@</span></div>
                  <input class="form-control" name="pppoe_account_suffix" value="<?= h($pppoe_account_suffix) ?>" placeholder="<?= h($pppoeDefaultSuffix) ?>" autocomplete="off">
                </div>
                <small class="text-muted">المصدر الموحد للحسابات الجديدة ولتجهيز التشفير. لا يغيّر الحسابات الفعلية الحالية، وتحتاج البيانات المجهزة بلواحق سابقة إلى إعادة تجهيز.</small>
              </div>
            </div>

            <div class="mt-3">
              <div class="custom-control custom-switch">
                <input type="checkbox" class="custom-control-input" id="currency_show_usd" name="currency_show_usd" <?= $currency_show_usd==='1'?'checked':'' ?>>
                <label class="custom-control-label" for="currency_show_usd"><?= t('إظهار الدولار في البرنامج') ?></label>
              </div>
            </div>

            <hr class="my-4">

            <h5 class="mb-3"><i class="fa fa-clock-o"></i> حماية الجلسة من عدم النشاط</h5>
            <div class="ua-idle-timeout-settings">
              <div class="ua-idle-switch">
                <input type="checkbox" id="idle_timeout_enabled" name="idle_timeout_enabled" <?= $idle_timeout_enabled?'checked':'' ?> aria-controls="idle_timeout_fields" aria-expanded="<?= $idle_timeout_enabled?'true':'false' ?>">
                <label class="ua-idle-switch-track" for="idle_timeout_enabled" aria-hidden="true"><span></span></label>
                <label class="ua-idle-switch-copy" for="idle_timeout_enabled">
                  <strong>تفعيل تسجيل الخروج عند عدم النشاط</strong>
                  <small>الحماية اختيارية ومحلية لهذه النسخة فقط. عند تعطيلها لن تُغلق الجلسة بسبب عدم النشاط.</small>
                </label>
              </div>
              <div id="idle_timeout_fields" class="ua-idle-timeout-fields mt-3" <?= $idle_timeout_enabled?'':'hidden' ?>>
                <div>
                  <label for="idle_timeout_minutes">مدة عدم النشاط قبل تسجيل الخروج (بالدقائق)</label>
                  <input class="form-control" id="idle_timeout_minutes" name="idle_timeout_minutes" type="number" min="5" max="1440" step="1" value="<?= (int)$idle_timeout_minutes ?>">
                  <small class="text-muted">الحد الأدنى 5 دقائق، والحد الأقصى 1440 دقيقة (24 ساعة).</small>
                </div>
              </div>
            </div>

            <hr class="my-4">

            <h5 class="mb-3"><?= t('إعدادات كروت الإنترنت (QR)') ?></h5>
            <div class="row">
              <div class="col-md-4">
                <label><?= t('محتوى QR') ?></label>
                <select class="form-control" name="voucher_qr_mode">
                  <option value="code_only" <?= $voucher_qr_mode==='code_only'?'selected':'' ?>><?= t('الكود فقط') ?></option>
                  <option value="code_pass" <?= $voucher_qr_mode==='code_pass'?'selected':'' ?>><?= t('الكود + الرقم السري') ?></option>
                  <option value="hotspot_url" <?= $voucher_qr_mode==='hotspot_url'?'selected':'' ?>><?= t('رابط صفحة الدخول (Hotspot URL)') ?></option>
                </select>
                <small class="text-muted"><?= t('يؤثر على QR في صفحة طباعة الكروت.') ?></small>
              </div>

              <div class="col-md-8">
                <label><?= t('Hotspot URL (اختياري)') ?></label>
                <input class="form-control" name="voucher_qr_hotspot_url" value="<?= h($voucher_qr_hotspot_url) ?>" placeholder="<?= h(t('مثال: http://1.1.1.1/login أو https://your-portal/login')) ?>">
                <small class="text-muted"><?= t('يُستخدم فقط إذا اخترت "رابط صفحة الدخول". سيتم إلحاق username/password تلقائيًا.') ?></small>
              </div>
            </div>

            <div class="mt-3">
              <div class="custom-control custom-switch">
                <input type="checkbox" class="custom-control-input" id="voucher_qr_paid_only" name="voucher_qr_paid_only" <?= $voucher_qr_paid_only==='1'?'checked':'' ?>>
                <label class="custom-control-label" for="voucher_qr_paid_only"><?= t('إظهار QR فقط للكروت المدفوعة') ?></label>
              </div>
            </div>

            <hr class="my-4">
            <h5 class="mb-3"><i class="fa fa-money"></i> إجراءات ما بعد تسديد الفاتورة</h5>
            <div class="row">
              <div class="col-md-6">
                <div class="custom-control custom-switch">
                  <input type="checkbox" class="custom-control-input" id="invoice_send_paid_message" name="invoice_send_paid_message" <?= $invoice_send_paid_message==='1'?'checked':'' ?>>
                  <label class="custom-control-label" for="invoice_send_paid_message">إرسال رسالة تأكيد التسديد عند اكتمال السداد</label>
                </div>
                <small class="text-muted">تُدرج رسالة INVOICE_PAID في طابور الإرسال بعد سداد الفاتورة بالكامل.</small>
              </div>
              <div class="col-md-6 mt-3 mt-md-0">
                <div class="custom-control custom-switch">
                  <input type="checkbox" class="custom-control-input" id="invoice_auto_print_on_payment" name="invoice_auto_print_on_payment" <?= $invoice_auto_print_on_payment==='1'?'checked':'' ?>>
                  <label class="custom-control-label" for="invoice_auto_print_on_payment">طباعة الفاتورة تلقائياً بعد التسديد</label>
                </div>
                <small class="text-muted">تُرسل مباشرة إلى طابعة الفواتير المحددة في صفحة الطابعات، من دون إظهار مربع حوار.</small>
              </div>
            </div>

            <hr class="my-4">
            <h5 class="mb-3"><?= t('إعدادات تفعيل الكروت على MikroTik') ?></h5>

            <div class="row">
              <div class="col-md-6">
                <div class="custom-control custom-switch">
                  <input type="checkbox" class="custom-control-input" id="voucher_auto_mt_on_payment" name="voucher_auto_mt_on_payment" <?= $voucher_auto_mt_on_payment==='1'?'checked':'' ?>>
                  <label class="custom-control-label" for="voucher_auto_mt_on_payment"><?= t('تفعيل تلقائي على MikroTik عند الدفع (نقطة البيع)') ?></label>
                </div>
                <small class="text-muted"><?= t('عند بيع الكرت وتسجيل القبض، يتم إنشاء مستخدم Hotspot تلقائيًا.') ?></small>
              </div>

              <div class="col-md-6 mt-3 mt-md-0">
                <div class="custom-control custom-switch">
                  <input type="checkbox" class="custom-control-input" id="voucher_auto_mt_on_redeem" name="voucher_auto_mt_on_redeem" <?= $voucher_auto_mt_on_redeem==='1'?'checked':'' ?>>
                  <label class="custom-control-label" for="voucher_auto_mt_on_redeem"><?= t('تفعيل تلقائي عند أول Scan للـ QR بعد الدفع') ?></label>
                </div>
                <small class="text-muted"><?= t('مفيد لو أردت أن يكون التفعيل مرتبطًا بوقت الاستخدام الأول.') ?></small>
              </div>
            </div>

            <div class="row mt-3">
              <div class="col-md-4">
                <div class="custom-control custom-switch">
                  <input type="checkbox" class="custom-control-input" id="voucher_single_device" name="voucher_single_device" <?= $voucher_single_device==='1'?'checked':'' ?>>
                  <label class="custom-control-label" for="voucher_single_device"><?= t('جهاز واحد فقط (ربط MAC تلقائيًا)') ?></label>
                </div>
                <small class="text-muted"><?= t('يتم ربط الكرت بأول جهاز يسجل الدخول (على MikroTik) ومنع مشاركة الجهاز.') ?></small>
              </div>

              <div class="col-md-4 mt-3 mt-md-0">
                <div class="custom-control custom-switch">
                  <input type="checkbox" class="custom-control-input" id="voucher_device_lock_enabled" name="voucher_device_lock_enabled" <?= $voucher_device_lock_enabled==='1'?'checked':'' ?>>
                  <label class="custom-control-label" for="voucher_device_lock_enabled"><?= t('قفل مؤقت عند محاولة استخدام الكرت على جهاز آخر') ?></label>
                </div>
                <small class="text-muted"><?= t('يتم تعطيل المستخدم مؤقتًا ثم يعود تلقائيًا. مدد القفل:') ?> <b><?= h($voucher_device_lock_steps) ?></b> <?= t('(دقائق) بالتتابع.') ?></small>
              </div>

              <div class="col-md-4 mt-3 mt-md-0">
                <label><?= t('عدد مرات تبديل الجهاز المسموح لكل كرت') ?></label>
                <input class="form-control" name="voucher_device_reset_max" type="number" min="0" max="5" value="<?= (int)$voucher_device_reset_max ?>">
                <small class="text-muted"><?= t('0 = ممنوع تبديل الجهاز. 1 = مرة واحدة (المقترح).') ?></small>
              </div>

              <div class="col-md-8 mt-3">
                <label><?= t('اسم Hotspot Profile للكروت') ?></label>
                <input class="form-control" name="voucher_hotspot_profile" value="<?= h($voucher_hotspot_profile) ?>" placeholder="voucher">
                <small class="text-muted"><?= t('سيتم إنشاء profile تلقائيًا إن لم يكن موجودًا، مع إعدادات جهاز واحد.') ?></small>
              </div>
            </div>

            <div class="mt-4">
              <button class="btn btn-success" name="save">
                <i class="fa fa-save"></i> <?= t('حفظ') ?>
              </button>
            </div>

          </form>

        </div>
      </div>

    </div>
  </section>
</div>

<script>
(function(){
  var toggle=document.getElementById('idle_timeout_enabled');
  var fields=document.getElementById('idle_timeout_fields');
  if(!toggle||!fields)return;
  function sync(){
    fields.hidden=!toggle.checked;
    toggle.setAttribute('aria-expanded',toggle.checked?'true':'false');
  }
  toggle.addEventListener('change',sync);
  sync();
})();
</script>
<?php include __DIR__ . '/footer.php'; ?>
