<?php
@ini_set('display_errors','0');
error_reporting(E_ALL & ~E_WARNING & ~E_NOTICE);
if (session_status() === PHP_SESSION_NONE) session_start();
header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0');
header('Pragma: no-cache');

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__ . '/../subscriber_mikrotik_watch_lib.php';
require_once __DIR__ . '/../ppp_active_cache_lib.php';
require_once __DIR__ . '/../mac_vendor_lib.php';
require_once __DIR__ . '/../subscriber_view_data_lib.php';

require_login('index.php?login=1');
if (function_exists('require_perm')) @require_perm('can_subscribers');
$conn = ensure_db(true);

function modal_h($s){ return htmlspecialchars((string)$s, ENT_QUOTES, 'UTF-8'); }
function modal_bad(string $msg, int $code=400): void { http_response_code($code); echo '<div class="ua-compact-error">'.modal_h($msg).'</div>'; exit; }
function modal_val($v): string { $s = trim((string)$v); return $s !== '' ? $s : '—'; }
function modal_norm_user($u): string { return function_exists('mtwatch_norm_user') ? mtwatch_norm_user((string)$u) : preg_replace('/@.*/','',trim((string)$u)); }
function modal_first_value(array $row, array $keys): string {
  foreach ($keys as $key) {
    $v = trim((string)($row[$key] ?? ''));
    if ($v !== '') return $v;
  }
  return '';
}
function modal_attachment_info(string $path): array {
  $path = trim(str_replace('\\', '/', $path));
  if ($path === '' || preg_match('~^[a-z][a-z0-9+.-]*:~i', $path) || strpos($path, '..') !== false) {
    return ['url'=>'', 'exists'=>false, 'is_image'=>false, 'is_pdf'=>false];
  }
  $path = ltrim($path, '/');
  $ext = strtolower(pathinfo($path, PATHINFO_EXTENSION));
  $adminBase = rtrim(str_replace('\\', '/', dirname(dirname((string)($_SERVER['SCRIPT_NAME'] ?? '/mikrotik/admin/api/subscriber_modal_view.php')))), '/');
  return [
    'url' => $adminBase . '/' . $path,
    'exists' => is_file(__DIR__ . '/../' . $path),
    'is_image' => in_array($ext, ['jpg','jpeg','png','webp','gif'], true),
    'is_pdf' => $ext === 'pdf',
  ];
}

$id=(int)($_GET['id']??0);
$go=super_admin_sanitize_go((string)($_GET['go']??''));
if($id<=0) modal_bad('رقم المشترك غير صالح.');
$expected='subscribers_view.php?id='.$id;
if($go==='' || !str_starts_with($go, $expected)) modal_bad('رابط الحماية غير صالح.',403);
if(!super_admin_ok($go)) modal_bad('انتهت جلسة الحماية أو لم يتم إدخال كلمة المرور.',403);

if (function_exists('mtwatch_ensure_schema')) @mtwatch_ensure_schema($conn);
// مهم للأداء: نافذة عرض المشترك يجب ألا تشغل مزامنة MikroTik عميقة.
// تعرض آخر بيانات محفوظة/مخزنة، والمزامنة تعمل من worker مستقل.

$viewData = function_exists('subscriber_view_load') ? subscriber_view_load($conn, $id, true, false) : null;
if (!$viewData) modal_bad('المشترك غير موجود.',404);
$sub = $viewData['row'];
$identity = $viewData['identity'];
$runtime = $viewData['runtime'];
$pppUser = (string)($identity['ppp_username'] ?? '');
$pppUserNorm = (string)($identity['ppp_username_norm'] ?? modal_norm_user($pppUser));
$pppPass = (string)($identity['ppp_password'] ?? '');
$pppProfile = (string)($identity['ppp_profile'] ?? '');
$isDeleted = !empty($identity['is_deleted']);
$isOnline = !empty($runtime['is_online']);
$isDisabled = !empty($runtime['is_disabled']);
$activeRow = is_array($runtime['active_row'] ?? null) ? $runtime['active_row'] : [];
$mtReality = is_array($runtime['mikrotik_reality'] ?? null) ? $runtime['mikrotik_reality'] : [];
$currentIp = (string)($runtime['current_ip'] ?? '');
$currentMac = (string)($runtime['current_mac'] ?? '');
$currentUptime = (string)($runtime['current_uptime'] ?? '');
$lastMac = (string)($runtime['last_mac'] ?? '');
$lastLogout = (string)($runtime['last_logout'] ?? '');
$lastReason = (string)($runtime['last_reason'] ?? '');
$idFront = modal_attachment_info(modal_first_value($sub, ['id_card_front','id_front']));
$idBack = modal_attachment_info(modal_first_value($sub, ['id_card_back','id_back']));
$idPdf = modal_attachment_info(modal_first_value($sub, ['id_card_pdf','id_pdf']));
$hasIdentityAttachment = ($idFront['url'] !== '' || $idBack['url'] !== '' || $idPdf['url'] !== '');
$sameIdImage = $idFront['url'] !== '' && $idFront['url'] === $idBack['url'];
$identityImageStyle = 'width:360px!important;max-width:100%!important;height:170px!important;max-height:170px!important;object-fit:contain!important;display:block!important;background:#020617!important;border:0!important;margin:0!important;';
$identityCardStyle = 'width:360px!important;max-width:100%!important;overflow:hidden!important;';

$lastMacInfo = $lastMac !== '' && function_exists('macvendor_identify') ? macvendor_identify($conn, $lastMac) : ['vendor'=>($sub['last_mac_vendor'] ?? ''), 'device_type'=>($sub['last_device_type'] ?? ''), 'label'=>''];
$currentMacInfo = $currentMac !== '' && function_exists('macvendor_identify') ? macvendor_identify($conn, $currentMac) : ['vendor'=>($sub['current_mac_vendor'] ?? ''), 'device_type'=>($sub['current_device_type'] ?? ''), 'label'=>''];
$lastMacLabel = trim((string)($lastMacInfo['label'] ?? ''));
$currentMacLabel = trim((string)($currentMacInfo['label'] ?? ''));
if ($lastMacLabel === '' || $lastMacLabel === 'غير معروف') $lastMacLabel = trim(((string)($sub['last_mac_vendor'] ?? '')) . (((string)($sub['last_device_type'] ?? '')) !== '' ? ' / ' . (string)($sub['last_device_type'] ?? '') : ''));
if ($currentMacLabel === '' || $currentMacLabel === 'غير معروف') $currentMacLabel = trim(((string)($sub['current_mac_vendor'] ?? '')) . (((string)($sub['current_device_type'] ?? '')) !== '' ? ' / ' . (string)($sub['current_device_type'] ?? '') : ''));


$fullName = trim((string)($sub['full_name'] ?? ''));
if ($fullName === '') $fullName = $pppUser ?: '—';

$personalFields = [
  ['رقم المشترك', $sub['id'] ?? ''],
  ['الاسم الكامل', $sub['full_name'] ?? ''],
  ['الاسم الأول', $sub['first_name'] ?? ''],
  ['اسم الأب', $sub['father_name'] ?? ''],
  ['الكنية', $sub['last_name'] ?? ''],
  ['نوع الوثيقة', $sub['document_type'] ?? 'هوية شخصية'],
  ['الجنسية', $sub['nationality'] ?? 'سوري'],
  ['رقم الوثيقة', $sub['document_number'] ?? ''],
  ['رقم السجل', $sub['record_number'] ?? ''],
  ['الرقم الوطني', $sub['national_id'] ?? ''],
  ['الهاتف', $sub['phone'] ?? ''],
  ['العنوان / المنطقة', ($sub['address'] ?? '') ?: ($sub['address_area'] ?? '')],
  ['ملاحظات', $sub['notes'] ?? ''],
];
$accountFields = [
  ['اسم المستخدم في البرنامج', $sub['username'] ?? ''],
  ['PPPoE User', $pppUser],
  ['PPPoE Password', $pppPass],
  ['PPPoE Profile', $pppProfile],
  ['الحالة', $sub['status'] ?? ($isDisabled ? 'مفصول' : 'نشط')],
  ['IP الحالي', $currentIp],
  ['MAC الحالي', $currentMac],
  ['نوع الجهاز الحالي', $currentMacLabel],
  ['آخر MAC سجل دخول', $lastMac],
  ['نوع جهاز آخر MAC', $lastMacLabel],
  ['مدة الجلسة الحالية', $currentUptime],
  ['آخر خروج من MikroTik', $lastLogout],
  ['سبب آخر خروج', $lastReason],
  ['آخر مزامنة مراقبة', $sub['mt_watch_sync_at'] ?? ''],
];
?>

<?php
$ua_modal_css_v = @filemtime(__DIR__ . '/../assets/css/ua_program_unified.css') ?: 1;
$ua_modal_view_css_v = @filemtime(__DIR__ . '/../assets/css/ua_subscriber_modal_view.css') ?: 1;
?>
<link rel="stylesheet" href="../assets/css/ua_program_unified.css?v=<?= (int)$ua_modal_css_v ?>">
<link rel="stylesheet" href="../assets/css/ua_subscriber_modal_view.css?v=<?= (int)$ua_modal_view_css_v ?>">
<style>
.ua-subscriber-modal-view .ua-read-id-card{width:360px!important;max-width:100%!important}
.ua-subscriber-modal-view .ua-read-id-card img{width:360px!important;max-width:100%!important;height:170px!important;max-height:170px!important;object-fit:contain!important;display:block!important;background:#020617!important}
</style>
<div class="ua-subscriber-modal-view ua-modal-view-v2 ua-read-shell">
  <div class="ua-read-card ua-read-hero">
    <div class="ua-read-hero-main">
      <h3><?= modal_h($fullName) ?></h3>
      <div class="ua-read-subline">رقم: <b><?= (int)$id ?></b> | PPP: <b><?= modal_h($pppUser ?: '—') ?></b><?php if($lastMac): ?> | آخر MAC: <b><?= modal_h($lastMac) ?></b><?php if($lastMacLabel): ?> | الجهاز: <b><?= modal_h($lastMacLabel) ?></b><?php endif; ?><?php endif; ?></div>
    </div>
    <div class="ua-read-badges">
      <span class="ua-read-badge <?= $isOnline?'ua-ok':'ua-warn' ?>"><?= $isOnline?'متصل':'غير متصل' ?></span>
      <span class="ua-read-badge <?= $isDisabled?'ua-bad':'ua-ok' ?>"><?= $isDisabled?'مفصول':'فعال' ?></span>
      <span class="ua-read-badge <?= $isDeleted?'ua-bad':'ua-info' ?>"><?= $isDeleted?'مؤرشف':'غير مؤرشف' ?></span>
    </div>
  </div>

  <section class="ua-read-card">
    <div class="ua-read-section-title">البيانات الشخصية</div>
    <div class="ua-read-grid">
      <?php foreach($personalFields as $f): $wide = ($f[0] === 'ملاحظات'); ?>
        <div class="ua-read-field <?= $wide?'is-wide':'' ?>"><div class="ua-read-label"><?= modal_h($f[0]) ?></div><div class="ua-read-value"><?= nl2br(modal_h(modal_val($f[1]))) ?></div></div>
      <?php endforeach; ?>
    </div>
  </section>

  <section class="ua-read-card">
    <div class="ua-read-section-title">بيانات الحساب و MikroTik</div>
    <div class="ua-read-grid">
      <?php foreach($accountFields as $f): ?>
        <div class="ua-read-field"><div class="ua-read-label"><?= modal_h($f[0]) ?></div><div class="ua-read-value"><?= modal_h(modal_val($f[1])) ?></div></div>
      <?php endforeach; ?>
    </div>
  </section>

  <section class="ua-read-card" id="uaModalIdentityCards">
    <div class="ua-read-section-title">صورة الهوية</div>
    <?php if($sameIdImage): ?>
      <div class="ua-read-id-grid ua-read-id-grid-single">
        <article class="ua-read-id-card" style="<?= modal_h($identityCardStyle) ?>">
          <div class="ua-read-id-head"><strong>الوجهين معاً</strong><?php if(!$idFront['exists']): ?><span>الملف غير موجود</span><?php endif; ?></div>
          <?php if($idFront['is_image']): ?>
            <a href="<?= modal_h($idFront['url']) ?>" target="_blank" rel="noopener" style="display:block!important;width:360px!important;max-width:100%!important;"><img src="<?= modal_h($idFront['url']) ?>" alt="صورة الهوية - الوجهين معاً" style="<?= modal_h($identityImageStyle) ?>"></a>
          <?php elseif($idFront['is_pdf']): ?>
            <a class="ua-read-id-file" href="<?= modal_h($idFront['url']) ?>" target="_blank" rel="noopener"><i class="fa fa-file-pdf-o"></i> فتح ملف الهوية PDF</a>
          <?php else: ?>
            <div class="ua-read-id-empty">نوع الملف غير قابل للمعاينة</div>
          <?php endif; ?>
        </article>
      </div>
    <?php elseif($hasIdentityAttachment): ?>
      <div class="ua-read-id-grid">
        <?php foreach ([['الوجه الأمامي',$idFront,'صورة الهوية - الوجه الأمامي'], ['الوجه الخلفي',$idBack,'صورة الهوية - الوجه الخلفي']] as $card): ?>
          <article class="ua-read-id-card" style="<?= modal_h($identityCardStyle) ?>">
            <div class="ua-read-id-head"><strong><?= modal_h($card[0]) ?></strong><?php if($card[1]['url'] && !$card[1]['exists']): ?><span>الملف غير موجود</span><?php endif; ?></div>
            <?php if(!$card[1]['url']): ?>
              <div class="ua-read-id-empty">لا توجد صورة محفوظة</div>
            <?php elseif($card[1]['is_image']): ?>
              <a href="<?= modal_h($card[1]['url']) ?>" target="_blank" rel="noopener" style="display:block!important;width:360px!important;max-width:100%!important;"><img src="<?= modal_h($card[1]['url']) ?>" alt="<?= modal_h($card[2]) ?>" style="<?= modal_h($identityImageStyle) ?>"></a>
            <?php elseif($card[1]['is_pdf']): ?>
              <a class="ua-read-id-file" href="<?= modal_h($card[1]['url']) ?>" target="_blank" rel="noopener"><i class="fa fa-file-pdf-o"></i> فتح الملف</a>
            <?php else: ?>
              <div class="ua-read-id-empty">نوع الملف غير قابل للمعاينة</div>
            <?php endif; ?>
          </article>
        <?php endforeach; ?>
        <?php if($idPdf['url']): ?>
          <article class="ua-read-id-card">
            <div class="ua-read-id-head"><strong>ملف هوية PDF</strong><?php if(!$idPdf['exists']): ?><span>الملف غير موجود</span><?php endif; ?></div>
            <a class="ua-read-id-file" href="<?= modal_h($idPdf['url']) ?>" target="_blank" rel="noopener"><i class="fa fa-file-pdf-o"></i> فتح ملف الهوية</a>
          </article>
        <?php endif; ?>
      </div>
    <?php else: ?>
      <div class="ua-read-id-empty">لا توجد صورة هوية محفوظة لهذا المشترك.</div>
    <?php endif; ?>
  </section>

  <div class="ua-read-actions">
    <a class="ua-read-action is-primary" href="../subscribers_edit.php?id=<?= (int)$id ?>" target="_top">تعديل</a>
    <a class="ua-read-action is-secondary" href="#uaModalIdentityCards">صورة الهوية</a>
    <a class="ua-read-action is-secondary" href="../subscribers_history.php?id=<?= (int)$id ?>" target="_top">السجل</a>
    <a class="ua-read-action is-warning" href="../subscribers_distribution.php?id=<?= (int)$id ?>" target="_top">توزيع وتسديد</a>
    <?php if(!$isDeleted): ?><a class="ua-read-action is-danger" href="../subscribers_cancel.php?id=<?= (int)$id ?>" target="_top">إلغاء اشتراك</a><?php endif; ?>
  </div>
</div>
