<?php
// ============================================================
// modules/lawyer/profile.php — ملفي الشخصي
// المحامي يعدّل: الاسم، البريد، الهاتف، كلمة السر مباشرة
// الوثائق ورقم البطاقة: تذهب لموافقة الأدمن
// ============================================================
require_once __DIR__ . '/../../config/constants.php';
require_once __DIR__ . '/../../config/database.php';
require_once __DIR__ . '/../../includes/auth.php';
require_once __DIR__ . '/../../includes/rbac.php';
require_once __DIR__ . '/../../includes/functions.php';
require_once __DIR__ . '/../../includes/layout.php';
require_once __DIR__ . '/../../includes/sidebar_helper.php';

requireLogin(); requireRole(ROLE_LAWYER); requireActiveLawyer();
$GLOBALS['BASE_URL_CSS'] = BASE_URL . '/public/assets/css/main.css';

$user = currentUser();
$pdo  = db();

$profile = (function() use ($pdo, $user) {
    $s = $pdo->prepare("SELECT * FROM lawyer_profiles WHERE user_id=?");
    $s->execute([$user['id']]);
    return $s->fetch();
})();

$uData = (function() use ($pdo, $user) {
    $s = $pdo->prepare("SELECT * FROM users WHERE id=?");
    $s->execute([$user['id']]);
    return $s->fetch();
})();

// طلب التغيير المعلق (إن وجد)
$pendingRequest = (function() use ($pdo, $user) {
    $s = $pdo->prepare("SELECT * FROM profile_change_requests WHERE user_id=? AND status='pending' ORDER BY created_at DESC LIMIT 1");
    $s->execute([$user['id']]);
    return $s->fetch();
})();

// آخر طلب مرفوض
$lastRejected = (function() use ($pdo, $user) {
    $s = $pdo->prepare("SELECT * FROM profile_change_requests WHERE user_id=? AND status='rejected' ORDER BY reviewed_at DESC LIMIT 1");
    $s->execute([$user['id']]);
    return $s->fetch();
})();

$msg = $err = '';

// ─── POST: تعديل المعلومات الأساسية (مباشر) ────────────────
if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['action'] ?? '') === 'update_basic') {

    $fullName = trim($_POST['full_name'] ?? '');
    $phone    = trim($_POST['phone'] ?? '');
    $email    = trim($_POST['email'] ?? '');
    $newPass  = $_POST['new_password'] ?? '';
    $curPass  = $_POST['current_password'] ?? '';

    if (empty($fullName) || empty($email)) {
        $err = 'الاسم الكامل والبريد الإلكتروني مطلوبان.';
    } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $err = 'البريد الإلكتروني غير صحيح.';
    } else {
        // التحقق من البريد مكرر (مع استثناء المستخدم الحالي)
        $dup = $pdo->prepare("SELECT id FROM users WHERE email=? AND id!=?");
        $dup->execute([$email, $user['id']]);
        if ($dup->fetch()) {
            $err = 'هذا البريد الإلكتروني مستخدم بالفعل.';
        } else {
            // تحديث الاسم / البريد / الهاتف
            $pdo->prepare("UPDATE users SET full_name=?, email=?, phone=? WHERE id=?")
                ->execute([$fullName, $email, $phone ?: null, $user['id']]);

            // تغيير كلمة السر (اختياري)
            if ($newPass !== '') {
                if (strlen($newPass) < 8) {
                    $err = 'كلمة السر الجديدة يجب أن تكون 8 أحرف على الأقل.';
                } elseif (!password_verify($curPass, $uData['password_hash'])) {
                    $err = 'كلمة السر الحالية غير صحيحة.';
                } else {
                    $hash = password_hash($newPass, PASSWORD_BCRYPT);
                    $pdo->prepare("UPDATE users SET password_hash=? WHERE id=?")
                        ->execute([$hash, $user['id']]);
                }
            }

            if (!$err) {
                auditLog($user['id'], 'update_profile_basic', 'users', $user['id'], 'تعديل المعلومات الأساسية');
                $msg = 'تم تحديث معلوماتك الأساسية بنجاح.';
                // تحديث بيانات الجلسة
                $uData['full_name'] = $fullName;
                $uData['email']     = $email;
                $uData['phone']     = $phone;
            }
        }
    }
}

// ─── POST: طلب تعديل الوثائق / البطاقة المهنية (يحتاج موافقة) ──
if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['action'] ?? '') === 'request_sensitive') {

    if ($pendingRequest) {
        $err = 'لديك طلب تغيير معلق بالفعل. انتظر موافقة المدير قبل إرسال طلب جديد.';
    } else {
        $changes = [];

        // رقم البطاقة المهنية
        $newBarNum   = trim($_POST['bar_number'] ?? '');
        $newBarAssocId = $_POST['bar_association_id'] ?: null;
        $newBarAssoc = null;
        if ($newBarAssocId) {
            $b = $pdo->prepare('SELECT name FROM bar_associations WHERE id=?');
            $b->execute([$newBarAssocId]);
            $newBarAssoc = $b->fetchColumn() ?: null;
        }
        $newSpec     = trim($_POST['specialization'] ?? '');

        if ($newBarNum   && $newBarNum   !== ($profile['bar_number'] ?? ''))   $changes['new_bar_number']      = $newBarNum;
        if ($newBarAssocId && (int)$newBarAssocId !== (int)($profile['bar_association_id'] ?? 0)) {
            $changes['new_bar_association']    = $newBarAssoc;
            $changes['new_bar_association_id'] = $newBarAssocId;
        }
        if ($newSpec     && $newSpec     !== ($profile['specialization'] ?? '')) $changes['new_specialization']  = $newSpec;

        // رفع الوثائق
        $docFields = ['professional_card', 'accreditation_doc', 'id_card'];
        foreach ($docFields as $field) {
            if (!empty($_FILES[$field]['name'])) {
                $res = uploadFile($_FILES[$field], 'lawyer-docs');
                if (!$res['success']) { $err = $res['message']; break; }
                $changes["new_{$field}"] = $res['path'];
            }
        }

        if (!$err) {
            if (empty($changes)) {
                $err = 'لم تقم بأي تغيير. عدّل رقم البطاقة أو ارفع وثيقة جديدة.';
            } else {
                $cols = implode(',', array_map(fn($k) => "$k=?", array_keys($changes)));
                $vals = array_values($changes);
                $vals[] = $user['id'];
                $pdo->prepare("INSERT INTO profile_change_requests (user_id," . implode(',', array_keys($changes)) . ") VALUES (?," . implode(',', array_fill(0, count($changes), '?')) . ")")
                    ->execute(array_merge([$user['id']], array_values($changes)));

                // إشعار المدير
                $admins = $pdo->query("SELECT id FROM users WHERE role='admin' AND status='active'")->fetchAll();
                foreach ($admins as $adm) {
                    createNotification($adm['id'], 'profile_change_request', 'طلب تعديل ملف محامي',
                        "المحامي {$uData['full_name']} يطلب تعديل معلوماته الحساسة. يرجى المراجعة والموافقة.",
                        BASE_URL . '/modules/admin/profile-requests.php');
                }

                auditLog($user['id'], 'request_profile_change', 'profile_change_requests', null, 'طلب تعديل معلومات حساسة');
                $msg = 'تم إرسال طلب التعديل للمدير. ستتلقى إشعاراً بعد المراجعة.';

                // تحديث المتغير المحلي
                $pendingRequest = $pdo->prepare("SELECT * FROM profile_change_requests WHERE user_id=? AND status='pending' ORDER BY created_at DESC LIMIT 1");
                $pendingRequest->execute([$user['id']]);
                $pendingRequest = $pendingRequest->fetch();
            }
        }
    }
}

$notifCount = getUnreadNotifCount($user['id']);
renderHead('ملفي الشخصي');
?>
<div class="sidebar" id="sidebar"><?php buildSidebar('profile', 'lawyer'); ?></div>
<div class="sidebar-overlay" id="sidebarOverlay"></div>
<div class="main-wrap">
<?php renderTopbar('ملفي الشخصي', $notifCount); ?>
<div class="page-content">

<?php if ($msg): ?>
<div class="alert alert-success alert-dismissible mb-3">
  <i class="bi bi-check-circle-fill me-2"></i><?= htmlspecialchars($msg) ?>
  <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
<?php endif; ?>

<?php if ($err): ?>
<div class="alert alert-danger alert-dismissible mb-3">
  <i class="bi bi-exclamation-triangle-fill me-2"></i><?= htmlspecialchars($err) ?>
  <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
<?php endif; ?>

<!-- بطاقة الملف الشخصي -->
<div class="row g-3 mb-4">
  <div class="col-12">
    <div class="panel">
      <div class="panel-body d-flex align-items-center gap-4 pb-3" style="border-bottom:1px solid var(--border)">
        <div style="width:72px;height:72px;border-radius:50%;background:linear-gradient(135deg,var(--navy),var(--gold));display:flex;align-items:center;justify-content:center;font-size:28px;font-weight:800;color:var(--white);flex-shrink:0">
          <?= mb_substr($uData['full_name'] ?? $user['name'], 0, 1, 'UTF-8') ?>
        </div>
        <div>
          <h5 class="font-amiri fw-700 text-navy mb-1"><?= htmlspecialchars($uData['full_name'] ?? $user['name']) ?></h5>
          <p class="text-muted mb-1" style="font-size:13px"><?= htmlspecialchars($uData['email']) ?></p>
          <?php if ($profile):
            $rs = ['pending' => ['في الانتظار','warning'], 'under_review' => ['قيد المراجعة','info'],
                   'approved' => ['معتمد','success'], 'rejected' => ['مرفوض','danger']][$profile['review_status']] ?? [$profile['review_status'],'secondary'];
          ?>
          <span class="badge bg-<?= $rs[1] ?>"><?= $rs[0] ?></span>
          <?php endif; ?>
        </div>
      </div>
      <!-- معلومات مختصرة -->
      <?php if ($profile): ?>
      <div class="panel-body row g-3 pt-3" style="font-size:13px">
        <div class="col-md-3"><p class="text-muted mb-0" style="font-size:11px">رقم البطاقة المهنية</p><strong><?= htmlspecialchars($profile['bar_number'] ?? '—') ?></strong></div>
        <div class="col-md-3"><p class="text-muted mb-0" style="font-size:11px">هيئة المحامين</p><strong><?= htmlspecialchars($profile['bar_association'] ?? '—') ?></strong></div>
        <div class="col-md-3"><p class="text-muted mb-0" style="font-size:11px">التخصص</p><strong><?= htmlspecialchars($profile['specialization'] ?? '—') ?></strong></div>
        <div class="col-md-3"><p class="text-muted mb-0" style="font-size:11px">الهاتف</p><strong><?= htmlspecialchars($uData['phone'] ?? '—') ?></strong></div>
      </div>
      <?php endif; ?>
    </div>
  </div>
</div>

<div class="row g-3">

  <!-- ════════════════════════════════════════════════
       القسم 1: المعلومات الأساسية (تعديل مباشر)
  ════════════════════════════════════════════════ -->
  <div class="col-lg-6">
    <div class="panel h-100">
      <div class="panel-body pb-2" style="border-bottom:1px solid var(--border)">
        <h6 class="font-amiri fw-700 text-navy mb-0">
          <i class="bi bi-person-fill me-2" style="color:var(--gold)"></i>
          المعلومات الأساسية
        </h6>
        <p class="text-muted mt-1 mb-0" style="font-size:12px">
          <i class="bi bi-lightning-fill text-success me-1"></i>
          تُحفظ فوراً دون الحاجة لموافقة المدير
        </p>
      </div>
      <div class="panel-body">
        <form method="POST" autocomplete="off">
          <input type="hidden" name="action" value="update_basic">

          <div class="mb-3">
            <label class="form-label fw-600" style="font-size:13px">الاسم الكامل <span class="text-danger">*</span></label>
            <input type="text" name="full_name" class="form-control"
                   value="<?= htmlspecialchars($uData['full_name'] ?? $user['name']) ?>" required>
          </div>

          <div class="mb-3">
            <label class="form-label fw-600" style="font-size:13px">البريد الإلكتروني <span class="text-danger">*</span></label>
            <input type="email" name="email" class="form-control"
                   value="<?= htmlspecialchars($uData['email']) ?>" required>
          </div>

          <div class="mb-3">
            <label class="form-label fw-600" style="font-size:13px">رقم الهاتف</label>
            <input type="tel" name="phone" class="form-control"
                   value="<?= htmlspecialchars($uData['phone'] ?? '') ?>">
          </div>

          <hr style="border-color:var(--border)">
          <p class="fw-600 mb-2" style="font-size:13px">
            <i class="bi bi-shield-lock me-1"></i> تغيير كلمة السر
            <span class="text-muted fw-400">(اتركها فارغة إن لم تُرد التغيير)</span>
          </p>

          <div class="mb-3">
            <label class="form-label" style="font-size:13px">كلمة السر الحالية</label>
            <input type="password" name="current_password" class="form-control"
                   placeholder="أدخل كلمة السر الحالية" autocomplete="current-password">
          </div>

          <div class="mb-3">
            <label class="form-label" style="font-size:13px">كلمة السر الجديدة</label>
            <input type="password" name="new_password" class="form-control"
                   placeholder="8 أحرف على الأقل" autocomplete="new-password">
          </div>

          <button type="submit" class="btn btn-gold w-100">
            <i class="bi bi-floppy-fill me-2"></i> حفظ التغييرات
          </button>
        </form>
      </div>
    </div>
  </div>

  <!-- ════════════════════════════════════════════════
       القسم 2: الوثائق والمعلومات المهنية (موافقة الأدمن)
  ════════════════════════════════════════════════ -->
  <div class="col-lg-6">
    <div class="panel h-100">
      <div class="panel-body pb-2" style="border-bottom:1px solid var(--border)">
        <h6 class="font-amiri fw-700 text-navy mb-0">
          <i class="bi bi-file-earmark-lock2-fill me-2" style="color:var(--gold)"></i>
          الوثائق والمعلومات المهنية
        </h6>
        <p class="text-muted mt-1 mb-0" style="font-size:12px">
          <i class="bi bi-shield-check text-warning me-1"></i>
          تحتاج موافقة المدير قبل التطبيق
        </p>
      </div>
      <div class="panel-body">

        <!-- تنبيه: طلب معلق -->
        <?php if ($pendingRequest): ?>
        <div class="alert mb-3" style="background:rgba(201,168,76,.1);border:1px solid rgba(201,168,76,.4);border-radius:10px;font-size:13px">
          <div class="d-flex align-items-start gap-2">
            <i class="bi bi-hourglass-split" style="color:var(--gold);font-size:18px;flex-shrink:0;margin-top:2px"></i>
            <div>
              <strong>طلب تعديل قيد المراجعة</strong>
              <p class="mb-1 mt-1">أرسلت طلب تعديل بتاريخ <?= date('d/m/Y H:i', strtotime($pendingRequest['created_at'])) ?>.</p>
              <p class="mb-0 text-muted">لا يمكنك إرسال طلب جديد قبل البت في هذا الطلب.</p>
              <?php
              $changesLabels = [
                'new_bar_number' => 'رقم البطاقة المهنية',
                'new_bar_association' => 'هيئة المحامين',
                'new_specialization' => 'التخصص',
                'new_professional_card' => 'بطاقة المحامي (وثيقة)',
                'new_accreditation_doc' => 'وثيقة الاعتماد',
                'new_id_card' => 'بطاقة الهوية',
              ];
              $pending = array_filter(array_intersect_key((array)$pendingRequest, $changesLabels));
              if ($pending): ?>
              <div class="mt-2">
                <span class="text-muted">التغييرات المطلوبة:</span>
                <?php foreach ($pending as $k => $v): ?>
                <span class="badge bg-secondary ms-1"><?= $changesLabels[$k] ?></span>
                <?php endforeach; ?>
              </div>
              <?php endif; ?>
            </div>
          </div>
        </div>
        <?php endif; ?>

        <!-- تنبيه: آخر طلب مرفوض -->
        <?php if ($lastRejected && !$pendingRequest): ?>
        <div class="alert mb-3" style="background:rgba(220,53,69,.07);border:1px solid rgba(220,53,69,.3);border-radius:10px;font-size:13px">
          <i class="bi bi-x-circle-fill text-danger me-2"></i>
          <strong>تم رفض آخر طلب تعديل</strong>
          <?php if ($lastRejected['rejection_reason']): ?>
          <p class="mb-0 mt-1">السبب: <?= htmlspecialchars($lastRejected['rejection_reason']) ?></p>
          <?php endif; ?>
        </div>
        <?php endif; ?>

        <!-- النموذج -->
        <form method="POST" enctype="multipart/form-data" <?= $pendingRequest ? 'style="pointer-events:none;opacity:.55"' : '' ?>>
          <input type="hidden" name="action" value="request_sensitive">

          <div class="mb-3">
            <label class="form-label fw-600" style="font-size:13px">رقم البطاقة المهنية</label>
            <input type="text" name="bar_number" class="form-control"
                   value="<?= htmlspecialchars($profile['bar_number'] ?? '') ?>"
                   placeholder="مثال: 12345/2020"
                   <?= $pendingRequest ? 'disabled' : '' ?>>
          </div>

          <div class="mb-3">
            <label class="form-label fw-600" style="font-size:13px">النقابة</label>
            <?php $profBars = $pdo->query("SELECT id, name FROM bar_associations WHERE is_active=1 ORDER BY name")->fetchAll(); ?>
            <select name="bar_association_id" class="form-select" <?= $pendingRequest ? 'disabled' : '' ?>>
              <option value="">— بدون تغيير —</option>
              <?php foreach ($profBars as $pb): ?>
              <option value="<?= $pb['id'] ?>" <?= (($profile['bar_association_id']??null)==$pb['id'])?'selected':'' ?>><?= htmlspecialchars($pb['name']) ?></option>
              <?php endforeach; ?>
            </select>
            <small class="text-muted">الحالية: <?= htmlspecialchars($profile['bar_association'] ?? '—') ?></small>
          </div>

          <div class="mb-3">
            <label class="form-label fw-600" style="font-size:13px">التخصص</label>
            <input type="text" name="specialization" class="form-control"
                   value="<?= htmlspecialchars($profile['specialization'] ?? '') ?>"
                   <?= $pendingRequest ? 'disabled' : '' ?>>
          </div>

          <hr style="border-color:var(--border)">
          <p class="fw-600 mb-2" style="font-size:13px">
            <i class="bi bi-upload me-1"></i> رفع وثائق جديدة
          </p>

          <?php
          $docDefs = [
            'professional_card' => ['البطاقة المهنية', 'professional_card'],
            'accreditation_doc' => ['وثيقة الاعتماد', 'accreditation_doc'],
            'id_card'           => ['بطاقة الهوية',   'id_card'],
          ];
          foreach ($docDefs as $field => [$label, $col]):
          ?>
          <div class="mb-2">
            <label class="form-label" style="font-size:12px"><?= $label ?></label>
            <div class="d-flex align-items-center gap-2">
              <?php if (!empty($profile[$col])): ?>
              <a href="<?= BASE_URL ?>/public/assets/uploads/<?= htmlspecialchars($profile[$col]) ?>"
                 target="_blank" class="btn btn-sm btn-outline-secondary" style="font-size:11px;white-space:nowrap">
                <i class="bi bi-eye"></i> الحالية
              </a>
              <?php endif; ?>
              <input type="file" name="<?= $field ?>" class="form-control form-control-sm"
                     accept=".pdf,.jpg,.jpeg,.png"
                     <?= $pendingRequest ? 'disabled' : '' ?>>
            </div>
          </div>
          <?php endforeach; ?>

          <div class="mt-3">
            <?php if ($pendingRequest): ?>
            <button type="button" class="btn btn-secondary w-100" disabled>
              <i class="bi bi-hourglass me-2"></i> في انتظار الموافقة
            </button>
            <?php else: ?>
            <button type="submit" class="btn btn-navy w-100">
              <i class="bi bi-send me-2"></i> إرسال طلب التعديل للمدير
            </button>
            <?php endif; ?>
          </div>
        </form>
      </div>
    </div>
  </div>

</div><!-- /row -->
</div><!-- /page-content -->
</div><!-- /main-wrap -->
<?php renderFoot(); ?>