<?php
if (session_status() === PHP_SESSION_NONE) session_start();

require_once __DIR__ . '/helpers.php';
require_once __DIR__ . '/lang.php';
require_once __DIR__ . '/auth.php';
require_once __DIR__ . '/db_bootstrap.php';
require_once __DIR__ . '/mikrotik_lib.php';
require_once __DIR__ . '/subscriber_history_lib.php';
require_once __DIR__ . '/subscriber_id_sequence_lib.php';

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

if (function_exists('ensure_db')) ensure_db(true);
$conn = $GLOBALS['conn'] ?? null;
if(!$conn) die('DB connection failed');
ua_subscriber_ensure_id_sequence($conn);

if (!function_exists('h')) { function h($s){ return htmlspecialchars((string)$s, ENT_QUOTES, 'UTF-8'); } }

$page_title = 'استيراد PPP من MikroTik';
$report = [];
$counts = ['add'=>0,'upd'=>0,'skip'=>0,'fail'=>0];
$shouldImport = (($_SERVER['REQUEST_METHOD'] ?? '') === 'POST' && ($_POST['action'] ?? '') === 'import_ppp');

if ($shouldImport && function_exists('ua_csrf_verify') && !ua_csrf_verify()) {
  $shouldImport = false;
  $counts['fail']++;
  $report[] = ['type'=>'err','text'=>'انتهت صلاحية نموذج الاستيراد. أعد فتح الصفحة وحاول مرة أخرى.'];
}

$api = $shouldImport ? mt_api_connect() : false;
$routerName = '';

if($shouldImport){
if($api){
  $hasCmd  = method_exists($api,'command');
  $hasComm = method_exists($api,'comm');

  $mt = function($path, $params=[]) use ($api,$hasCmd,$hasComm){
    if($hasCmd){
      $arr = [$path];
      foreach($params as $k=>$v){
        if($k==='.id') $arr[] = '=.id='.$v;
        else $arr[] = '='.$k.'='.$v;
      }
      return $api->command($arr);
    }
    if($hasComm){
      return $api->comm($path, $params);
    }
    return null;
  };

  try{
    $idn = $mt('/system/identity/print', []);
    if(is_array($idn) && isset($idn[0]['name'])) $routerName = $idn[0]['name'];
  }catch(Exception $e){}

  // ============ 1) اقرأ كل PPP secrets ============
  try{
    $secrets = $mt('/ppp/secret/print', []);
    if(!is_array($secrets)) $secrets = [];
  }catch(Exception $e){
    $counts['fail']++;
    $secrets = [];
    $report[] = ['type'=>'err','text'=>'❌ فشل قراءة /ppp/secret/print : '.$e->getMessage()];
  }

  // ============ 2) استيراد فقط حسابات ppp* ============
  foreach($secrets as $s){
    $name    = trim((string)($s['name'] ?? ''));
    $service = trim((string)($s['service'] ?? ''));
    $profile = trim((string)($s['profile'] ?? ''));
    $pass    = trim((string)($s['password'] ?? ''));

    // فقط PPPoE + فقط أسماء تبدأ بـ ppp
    if($service !== 'pppoe'){ $counts['skip']++; continue; }
    if(!preg_match('~^ppp~i', $name)){ $counts['skip']++; continue; }
    if($pass === ''){ $counts['skip']++; continue; }

    try{
      $esc = $conn->real_escape_string($name);
      $q = $conn->query("SELECT id FROM subscribers WHERE is_deleted=0 AND (ppp_username='{$esc}' OR username='{$esc}') LIMIT 1");
      $row = $q ? $q->fetch_assoc() : null;

      $now = $conn->real_escape_string(date('Y-m-d H:i:s'));
      $pEsc = $conn->real_escape_string($pass);
      $prEsc = $conn->real_escape_string($profile);

      if($row && isset($row['id'])){
        // تحديث الموجود
        $id = (int)$row['id'];
        $sql = "
          UPDATE subscribers SET
            ppp_username='{$esc}',
            ppp_password='{$pEsc}',
            ppp_profile='{$prEsc}',
            password_plain='{$pEsc}',
            ppp_last_sync='{$now}'
          WHERE id={$id}
        ";
        $conn->query($sql);
        $counts['upd']++;
        $report[] = ['type'=>'ok','text'=>"✅ تم تحديث: {$name}"];
      }else{
        // إضافة جديد
        $full = $conn->real_escape_string($name);

        // ملاحظة: إذا جدولك فيه أعمدة مختلفة، هنا غالباً مكان الخطأ
        $sql = "
          INSERT INTO subscribers
            (full_name, username, password_plain, ppp_username, ppp_password, ppp_profile, is_deleted, ppp_last_sync)
          VALUES
            ('{$full}', '{$esc}', '{$pEsc}', '{$esc}', '{$pEsc}', '{$prEsc}', 0, '{$now}')
        ";
        if($conn->query($sql)){
          $counts['add']++;
          $newId = (int)$conn->insert_id;
          if ($newId > 0 && function_exists('sh_mark_registered')) { sh_mark_registered($conn, $newId); }
          $report[] = ['type'=>'ok','text'=>"✅ تمت إضافة: {$name}"];
        }else{
          $counts['fail']++;
          $report[] = ['type'=>'err','text'=>"❌ DB Insert فشل للحساب {$name}: ".$conn->error];
        }
      }

    }catch(Exception $e){
      $counts['fail']++;
      $report[] = ['type'=>'err','text'=>"❌ فشل استيراد {$name}: ".$e->getMessage()];
    }
  }

  if(function_exists('mt_api_disconnect')) @mt_api_disconnect($api);
}else{
  $counts['fail']++;
  $report[] = ['type'=>'err','text'=>'❌ فشل الاتصال بالراوتر عبر API'];
}

}

$UA_FORCE_DESIGN_V2 = true;
include __DIR__ . '/header.php';
if (!(defined('UA_EMBED') && UA_EMBED)) include __DIR__ . '/sidebar.php';
?>
<div class="content-wrapper ua-extracted-page ua-subscriber-child-page ua-sub-child-ppp-import">
  <section class="content"><div class="ua-page-v2">
    <header class="ua-page-head">
      <div class="ua-page-title">
        <h1>استيراد PPP من MikroTik</h1>
        <p>قراءة أسرار PPPoE من الراوتر وإضافة أو تحديث المشتركين المطابقين.</p>
      </div>
    </header>

    <form method="post" class="mb-3" onsubmit="return confirm('سيتم قراءة حسابات PPPoE من الراوتر وتحديث جدول المشتركين. متابعة؟');">
      <input type="hidden" name="action" value="import_ppp">
      <?php if (function_exists('ua_csrf_field')) ua_csrf_field(); ?>
      <button type="submit" class="btn btn-primary">بدء الاستيراد من MikroTik</button>
      <a class="btn btn-secondary" href="subscribers.php">رجوع</a>
    </form>

    <div class="ua-alert alert-info">
      <?php if(!$shouldImport): ?>
        فتح الصفحة لا ينفذ الاستيراد تلقائياً. اضغط الزر فقط عندما تريد قراءة PPPoE من الراوتر وتحديث جدول المشتركين.<br>
      <?php endif; ?>
      النتيجة: إضافة=<?= (int)$counts['add'] ?> | تحديث=<?= (int)$counts['upd'] ?> | تخطي=<?= (int)$counts['skip'] ?> | فشل=<?= (int)$counts['fail'] ?><br>
      <?php if($routerName): ?>الراوتر: <b><?=h($routerName)?></b><?php endif; ?>
    </div>

    <?php if($shouldImport || !empty($report)): ?>
    <section class="ua-panel-v2">
      <div class="ua-panel-head"><h3 class="card-title">تقرير</h3></div>
      <div class="ua-panel-body ua-report-body">
      <div class="ua-u-lh-19">
        <?php foreach($report as $r):
          $icon = ($r['type']==='ok') ? '✅' : '❌';
        ?>
          <div><?= $icon ?> <?= h($r['text']) ?></div>
        <?php endforeach; ?>
      </div>
      </div>
    </section>
    <?php endif; ?>

    <div class="mt-3">
      <a class="btn btn-secondary" href="subscribers.php">⬅️ رجوع</a>
    </div>
  </div></section>
</div>
<?php include __DIR__ . '/footer.php'; ?>
