<?php
// Agent-facing subscriber status lookup.

require_once __DIR__ . '/agent_portal_lib.php';

$conn = ensure_db(true);
mysqli_report(MYSQLI_REPORT_OFF);
$ctx = agent_portal_boot($conn);
$agent = $ctx['agent'];
$agentId = (int)$ctx['agent_id'];
$msg = '';
$err = '';

if (!$agent || empty($ctx['logged'])) {
  header('Location: agent_portal.php' . ($agentId > 0 ? ('?agent=' . $agentId) : ''));
  exit;
}

$q = trim((string)($_GET['q'] ?? $_POST['q'] ?? ''));
$selectedId = (int)($_GET['subscriber_id'] ?? $_POST['subscriber_id'] ?? 0);
$results = $q !== '' ? agent_portal_search_subscribers($conn, $q, 25) : [];
$loaded = $selectedId > 0 ? subscriber_view_load($conn, $selectedId, false, false) : null;
$protectedOk = true;
$protectedPassword = trim((string)($_POST['protected_password'] ?? ''));

if ($loaded && !agent_portal_protected_ok($loaded['row'], $protectedPassword)) {
  $protectedOk = false;
  if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['unlock_status'])) $err = 'كلمة مرور سجل المشترك غير صحيحة.';
}

function ap_due_invoice_count(mysqli $conn, int $subscriberId): int {
  if ($subscriberId <= 0 || !table_exists($conn, 'invoices')) return 0;
  $where = "subscriber_id={$subscriberId}";
  $parts = [];
  if (col_exists($conn, 'invoices', 'remaining_amount')) $parts[] = "COALESCE(remaining_amount,0)>0";
  if (col_exists($conn, 'invoices', 'payment_status')) $parts[] = "LOWER(COALESCE(payment_status,'')) IN ('unpaid','due','partial')";
  if (col_exists($conn, 'invoices', 'status')) $parts[] = "COALESCE(status,'') LIKE '%غير%'";
  if (!$parts) return 0;
  $rs = @$conn->query("SELECT COUNT(*) c FROM invoices WHERE {$where} AND (" . implode(' OR ', $parts) . ")");
  if ($rs && ($row = $rs->fetch_assoc())) return (int)$row['c'];
  return 0;
}

agent_portal_render_head('استعلام حالة مشترك - واجهة المعتمد');
agent_portal_render_shell_start($conn, $ctx, 'status');
?>
<?php if($msg): ?><div class="ap-alert alert-success"><?= h($msg) ?></div><?php endif; ?>
<?php if($err): ?><div class="ap-alert alert-danger"><?= h($err) ?></div><?php endif; ?>

<section class="ap-panel ap-card mb-3">
  <div class="ap-card-title"><i class="fa fa-search"></i><div><h2>استعلام عن حالة مشترك</h2><p>ابحث بالاسم أو الهاتف أو حساب PPPoE.</p></div></div>
  <form method="get">
    <input type="hidden" name="agent" value="<?= (int)$agentId ?>">
    <?php if((string)($_GET['workspace'] ?? '') === '1'): ?><input type="hidden" name="workspace" value="1"><?php endif; ?>
    <div class="ap-form-grid">
      <div class="ap-field ap-field-full"><label>بحث</label><input class="form-control" name="q" data-ua-subscriber-search value="<?= h($q) ?>" placeholder="ID، اسم المشترك، الهاتف، اسم المستخدم أو PPPoE" autocomplete="off"></div>
    </div>
    <div class="ap-form-actions"><button class="ap-btn ap-btn-primary"><i class="fa fa-search"></i> استعلام</button></div>
  </form>
</section>

<div class="ap-two-col">
  <section class="ap-panel ap-card">
    <div class="ap-card-title"><i class="fa fa-list"></i><div><h3>نتائج البحث</h3><p><?= count($results) ?> نتيجة</p></div></div>
    <?php if($q === ''): ?>
      <div class="ap-empty">اكتب معيار البحث للبدء.</div>
    <?php elseif(!$results): ?>
      <div class="ap-empty">لا توجد نتائج مطابقة.</div>
    <?php else: ?>
      <?php foreach($results as $r): ?>
        <a class="ap-result mb-2" href="agent_subscriber_status.php?agent=<?= (int)$agentId ?>&amp;q=<?= urlencode($q) ?>&amp;subscriber_id=<?= (int)$r['id'] ?><?= (string)($_GET['workspace'] ?? '') === '1' ? '&amp;workspace=1' : '' ?>">
          <div class="ap-result-head">
            <div class="ap-result-title"><?= h(agent_portal_customer_name($r)) ?></div>
            <?php if(!empty($r['agent_status_protected'])): ?><span class="ap-tag ap-tag-red"><i class="fa fa-lock"></i>&nbsp;محمي</span><?php endif; ?>
          </div>
          <div class="ap-muted"><?= h(trim((string)($r['package_name'] ?? '') . ' ' . (string)($r['speed_name'] ?? ''))) ?></div>
          <div class="ap-tags"><span class="ap-tag">#<?= (int)$r['id'] ?></span><span class="ap-tag"><?= h($r['status'] ?? '-') ?></span><?php if(($r['created_by_type'] ?? '') === 'agent'): ?><span class="ap-tag ap-tag-green">أضيف عبر معتمد</span><?php endif; ?></div>
        </a>
      <?php endforeach; ?>
    <?php endif; ?>
  </section>

  <section class="ap-panel ap-card">
    <div class="ap-card-title"><i class="fa fa-heartbeat"></i></div>
    <?php if(!$loaded): ?>
      <div class="ap-empty">اختر مشتركاً من النتائج لعرض حالته.</div>
    <?php elseif(!$protectedOk): ?>
      <div class="ap-status-card">
        <div class="ap-status-line"><span class="ap-status-dot is-danger"></span><div><strong>السجل محمي</strong><span>هذا المشترك يحتاج كلمة مرور خاصة من النسخة الأساسية لعرض الحالة.</span></div></div>
        <form method="post">
          <?php ua_csrf_field(); ?>
          <input type="hidden" name="agent" value="<?= (int)$agentId ?>">
          <?php if((string)($_GET['workspace'] ?? '') === '1'): ?><input type="hidden" name="workspace" value="1"><?php endif; ?>
          <input type="hidden" name="q" value="<?= h($q) ?>">
          <input type="hidden" name="subscriber_id" value="<?= (int)$selectedId ?>">
          <div class="ap-field"><label>كلمة مرور سجل المشترك</label><input class="form-control" type="password" name="protected_password" autocomplete="current-password" required></div>
          <div class="ap-form-actions"><button class="ap-btn ap-btn-primary" name="unlock_status"><i class="fa fa-unlock"></i> عرض الحالة</button></div>
        </form>
      </div>
    <?php else: ?>
      <?php
        $row = $loaded['row'];
        $identity = $loaded['identity'];
        $runtime = $loaded['runtime'];
        if (strpos((string)($runtime['last_logout'] ?? ''), '1970-01-01') === 0) $runtime['last_logout'] = '';
        [$label, $class, $detail] = agent_portal_subscriber_state_label($row, $runtime);
        $dueCount = ap_due_invoice_count($conn, (int)$row['id']);
        if ($class !== 'is-online' && !empty($runtime['is_disabled']) && $dueCount > 0) {
          $label = 'مفصول آلياً بسبب مالي';
          $class = 'is-danger';
          $detail = 'توجد فواتير غير مسددة: ' . $dueCount;
        }
      ?>
      <div class="ap-status-card">
        <div class="ap-status-line"><span class="ap-status-dot <?= h($class) ?>"></span><div><strong><?= h($label) ?></strong><span><?= h($detail) ?></span></div></div>
        <div class="ap-info-grid">
          <div class="ap-info"><span>المشترك</span><strong><?= h($identity['full_name']) ?></strong></div>
          <div class="ap-info"><span>حساب PPPoE</span><strong dir="ltr"><?= h($identity['ppp_username']) ?></strong></div>
          <div class="ap-info"><span>الحالة المحلية</span><strong><?= h($identity['status']) ?></strong></div>
          <div class="ap-info"><span>نوع الوثيقة</span><strong><?= h($row['document_type'] ?? '—') ?></strong></div>
          <div class="ap-info"><span>رقم الوثيقة</span><strong dir="ltr"><?= h($row['document_number'] ?? '—') ?></strong></div>
          <div class="ap-info"><span>الرقم الوطني</span><strong dir="ltr"><?= h($row['national_id'] ?? '—') ?></strong></div>
          <div class="ap-info"><span>IP الحالي</span><strong dir="ltr"><?= h($runtime['current_ip'] ?: '—') ?></strong></div>
          <div class="ap-info"><span>MAC الحالي</span><strong dir="ltr"><?= h($runtime['current_mac'] ?: '—') ?></strong></div>
          <div class="ap-info"><span>مدة الاتصال</span><strong><?= h($runtime['current_uptime'] ?: '—') ?></strong></div>
          <div class="ap-info"><span>آخر فصل</span><strong><?= h($runtime['last_logout'] ?: '—') ?></strong></div>
          <div class="ap-info"><span>سبب آخر خروج</span><strong><?= h($runtime['last_reason'] ?: '—') ?></strong></div>
          <div class="ap-info"><span>الفواتير غير المسددة</span><strong><?= (int)$dueCount ?></strong></div>
        </div>
        <div class="ap-tags mt-3">
          <?php if(($row['created_by_type'] ?? '') === 'agent' && (int)($row['created_by_id'] ?? 0) === $agentId): ?>
            <span class="ap-tag ap-tag-green"><i class="fa fa-user-plus"></i>&nbsp;هذا المشترك أضيف بواسطة هذا المعتمد</span>
          <?php elseif(($row['created_by_type'] ?? '') === 'agent'): ?>
            <span class="ap-tag">أضيف بواسطة معتمد آخر</span>
          <?php else: ?>
          <?php endif; ?>
          <?php if(!empty($row['agent_status_protected'])): ?><span class="ap-tag ap-tag-red"><i class="fa fa-lock"></i>&nbsp;سجل محمي</span><?php endif; ?>
        </div>
      </div>
    <?php endif; ?>
  </section>
</div>
<?php agent_portal_render_shell_end(); ?>
