<?php
$UA_LOCAL_EMBED = !empty($UA_INLINE) || (defined('UA_EMBED') && UA_EMBED) || (isset($_GET['embed']) && $_GET['embed']=='1');
if ($UA_LOCAL_EMBED && !defined('UA_EMBED')) define('UA_EMBED', true);

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

$page_title = 'الأتمتة';
$UA_FORCE_DESIGN_V2 = true;
$uaAndroidAutomationMaintenance = ((string)($_GET['ua_android'] ?? '') === '1')
  || stripos((string)($_SERVER['HTTP_USER_AGENT'] ?? ''), 'NetworkCustomersAndroid/') !== false;
if ($uaAndroidAutomationMaintenance) $UA_PAGE_CSS = ['assets/css/android_automation_maintenance.css'];
if (!$UA_LOCAL_EMBED) require_once __DIR__ . '/header.php';
if (!$UA_LOCAL_EMBED) require_once __DIR__ . '/sidebar.php';

// Ensure DB connection exists in embed mode (embed=1) where header.php is not loaded
if ($UA_LOCAL_EMBED) {
  require_once __DIR__ . '/embed_bootstrap.php';
}

// شريط لوحة الأتمتة (بدون iframe)
if (!isset($UA_LOCAL_EMBED) || !$UA_LOCAL_EMBED) {
  $active_tab = 'maint';
}

require_once __DIR__ . '/auth.php';
require_once __DIR__ . '/helpers.php';
require_once __DIR__ . '/comms_admin_lib.php';

require_login();
if(function_exists('require_perm')) require_perm('can_settings');
if ($UA_LOCAL_EMBED && function_exists('ua_embed_glass_asset')) ua_embed_glass_asset();

$msg='';
$warn='';
$err_msg='';
$run_msgs=[];
$diag=null;
$test=null;
$key_prefix = basename(__FILE__,'.php');

// Simple toggle + interval in minutes
$enabled = get_app_setting($conn, $key_prefix.'_enabled', '0');
$interval = get_app_setting($conn, $key_prefix.'_interval', '60');

if(isset($_POST['save'])){
  $enabled = isset($_POST['enabled']) ? '1' : '0';
  $interval = (string)max(1,(int)($_POST['interval'] ?? 60));
  set_app_setting($conn, $key_prefix.'_enabled', $enabled);
  set_app_setting($conn, $key_prefix.'_interval', $interval);
  $msg = 'تم حفظ الإعدادات ✅';
}

// ===========================
// صيانة/إصلاح الآن (بدون عرض أوامر)
// ===========================
// هذه الأزرار تُستخدم للتشخيص والإصلاح اليدوي عند الحاجة.
// التنفيذ الفعلي ما يزال يمكن جدولته لاحقاً.
if (!isset($conn) || !$conn) { $conn = $GLOBALS['conn'] ?? null; }
if ($conn) {
  comms_ensure_tables($conn);
}

if(isset($_POST['run_detect'])){
  if(!$conn){
    $err_msg = 'تعذر الاتصال بقاعدة البيانات.';
  } else {
    $diag = comms_detect_topology($conn);
    if(empty($diag['ok'])){
      $warn = $diag['msg'] ?? 'فشل التشخيص.';
    }
  }
}

if(isset($_POST['run_fix_all'])){
  if(!$conn){
    $err_msg = 'تعذر الاتصال بقاعدة البيانات.';
  } else {
    // 1) Detect topology (WAN/Transit/Trunk)
    $diag = comms_detect_topology($conn);
    if(empty($diag['ok'])){
      $err_msg = $diag['msg'] ?? 'فشل التشخيص.';
    } else {
      $links = $diag['links'] ?? [];
      $t1 = $links['transit_uplink'] ?? '';
      $t2 = $links['transit_pppoe'] ?? '';

      // 2) Apply transit + routes (Ensure + anti-dup)
      $trans = comms_apply_transit($conn, [
        'transit_uplink'=>$t1,
        'transit_pppoe'=>$t2,
        // keep defaults; can be customized later
        'r1_ip'=>'10.255.255.1/30',
        'r2_ip'=>'10.255.255.2/30',
      ]);
      if(!empty($trans['ok'])){
        foreach(($trans['msgs'] ?? []) as $m){ $run_msgs[] = $m; }
      } else {
        $run_msgs[] = '❌ فشل إعداد الربط/المسارات | Transit/Routes failed: '.h($trans['msg'] ?? ($trans['error'] ?? ''));
      }

      // 3) Apply sectors (VLAN + pool + PPPoE per VLAN) on Router2
      $sectors = comms_get_sectors($conn);
      foreach($sectors as $s){
        if(intval($s['is_enabled'] ?? 1)!==1) continue;
        $router = comms_get_router($conn, intval($s['router_id']));
        if(!$router){
          $run_msgs[] = '⚠️ تم تخطي قطاع (لا يوجد Router) | Skipped sector (router not set): '.h($s['name'] ?? '');
          continue;
        }
        // If pool missing, auto-suggest based on VLAN
        $vid = intval($s['vlan_id'] ?? 0);
        if(($s['pppoe_pool_range'] ?? '')==='' || ($s['pppoe_local_ip'] ?? '')===''){
          $suggest = comms_suggest_pool_for_vlan($vid);
          comms_update_sector_pool($conn, intval($s['id']), $suggest);
          // refresh row
          $s = comms_get_sector($conn, intval($s['id'])) ?: $s;
          $run_msgs[] = 'ℹ️ تم اقتراح IP Pool تلقائياً للقطاع | Auto pool suggested: '.h($s['name']).' (VLAN '.$vid.')';
        }

        $err='';
        $res = comms_apply_sector_pppoe($conn,$router,$s,$err);
        if(!empty($res['ok'])){
          $run_msgs[] = '✅ '.h($s['name']).' | '.h($res['msg'] ?? 'تم التطبيق');
        } else {
          $run_msgs[] = '❌ '.h($s['name']).' | '.h($res['error'] ?? $err ?: 'فشل');
        }
      }

      if(!$run_msgs){
        $run_msgs[] = 'ℹ️ لا توجد عمليات للتنفيذ حالياً.';
      }
    }
  }
}

if(isset($_POST['run_test_all'])){
  if(!$conn){
    $err_msg = 'تعذر الاتصال بقاعدة البيانات.';
  } else {
    $test = comms_test_all($conn);
    if(empty($test['ok'])){
      $warn = $test['msg'] ?? 'فشل الاختبار.';
    }
  }
}

$title_map = [
  'automation_invoices' => 'الأتمتة / توليد الفواتير التلقائي',
  'automation_maintenance' => 'الأتمتة / صيانة تلقائية',
  'automation_reports' => 'الأتمتة / تقارير أسبوعية',
];
$page_h1 = $title_map[$key_prefix] ?? 'الأتمتة';

if ($uaAndroidAutomationMaintenance && !$UA_LOCAL_EMBED) {
  require __DIR__ . '/android_automation_maintenance.php';
  include __DIR__ . '/footer.php';
  return;
}

?>
<div class="content-wrapper ua-extracted-page">
 <section class="content-header ua-u-hidden"><div class="container-fluid"><h1><?= h($page_h1) ?></h1></div></section>
  <section class="content"><div class="container-fluid">

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

    <div class="card">
      <div class="card-body">
        <form method="post">
          <div class="custom-control custom-switch">
            <input type="checkbox" class="custom-control-input" id="enabled" name="enabled" <?= $enabled==='1'?'checked':'' ?>>
            <label class="custom-control-label" for="enabled">تفعيل هذه المهمة تلقائياً</label>
          </div>

          <div class="row mt-3">
            <div class="col-md-4">
              <label>فترة التحديث (بالدقائق)</label>
              <input type="number" min="1" class="form-control" name="interval" value="<?= (int)$interval ?>">
            </div>
          </div>

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

          <div class="alert alert-info mt-4 mb-0">
            
          </div>
        </form>
      </div>
    </div>

    <div class="card mt-4">
      <div class="card-header">
        <h3 class="ua-u-m0">صيانة الآن | Maintenance Now</h3>
      </div>
      <div class="card-body">
        <div class="alert alert-secondary ua-u-mb-12">
          <b>مهم:</b> هذه الأدوات لا تعرض أي أوامر MikroTik على الواجهة. تعرض فقط نتائج مفهومة.
          كما أنها تعتمد مبدأ <b>Ensure</b> لمنع تكرار التنفيذ.
        </div>

        <form method="post" class="mb-3">
          <button class="btn btn-info" name="run_detect" value="1"><i class="fa fa-search"></i> تشخيص تلقائي | Auto Detect</button>
          <button class="btn btn-warning ua-u-mr-6" name="run_fix_all" value="1"><i class="fa fa-magic"></i> إصلاح شامل | Fix All (Ensure)</button>
          <button class="btn btn-primary ua-u-mr-6" name="run_test_all" value="1"><i class="fa fa-check"></i> اختبار شامل | Test All</button>
        </form>

        <?php if(is_array($diag) && !empty($diag['ok'])): ?>
          <div class="alert alert-success">
            ✅ تم التشخيص بنجاح | Detection OK
          </div>
          <div class="row">
            <div class="col-md-6">
              <div class="border rounded p-2">
                <b>Router1 (Uplink)</b><br>
                WAN: <b><?= h($diag['wan']['wan_iface'] ?? 'غير معروف') ?></b>
                (<?= h($diag['wan']['mode_detected'] ?? 'unknown') ?>)
              </div>
            </div>
            <div class="col-md-6">
              <div class="border rounded p-2">
                <b>Router2 (PPPoE)</b><br>
                Transit: <b><?= h($diag['links']['transit_pppoe'] ?? 'غير معروف') ?></b><br>
                Trunk: <b><?= h($diag['links']['trunk_pppoe'] ?? 'غير معروف') ?></b>
              </div>
            </div>
          </div>
        <?php endif; ?>

        <?php if(!empty($run_msgs)): ?>
          <hr>
          <h4 class="ua-u-mt-0">نتائج الإصلاح | Fix Results</h4>
          <ul class="ua-u-pr-18">
            <?php foreach($run_msgs as $m): ?>
              <li><?= $m ?></li>
            <?php endforeach; ?>
          </ul>
        <?php endif; ?>

        <?php if(is_array($test) && !empty($test['ok'])): ?>
          <hr>
          <h4 class="ua-u-mt-0">نتائج الاختبار | Test Results</h4>
          <div class="table-responsive">
            <table class="table table-bordered table-sm">
              <thead>
                <tr>
                  <th>البند | Check</th>
                  <th>النتيجة | Result</th>
                  <th>تفاصيل | Details</th>
                </tr>
              </thead>
              <tbody>
              <?php foreach(($test['results'] ?? []) as $r): ?>
                <tr>
                  <td><?= h(($r['ar'] ?? '').' | '.($r['k'] ?? '')) ?></td>
                  <td class="ua-u-nowrap"><?= !empty($r['ok']) ? '✅ PASS' : '❌ FAIL' ?></td>
                  <td><?= h($r['v'] ?? '') ?></td>
                </tr>
              <?php endforeach; ?>
              </tbody>
            </table>
          </div>
        <?php endif; ?>

      </div>
    </div>

  </div></section>
</div>
<?php if (!$UA_LOCAL_EMBED) include __DIR__ . '/footer.php'; ?>
