
<?php
require_once __DIR__ . '/../app/helpers.php';
require_once __DIR__ . '/../app/db.php';
require_once __DIR__ . '/../app/db_tools.php';
require_once __DIR__ . '/../app/layout.php';
require_once __DIR__ . '/../app/audit.php';
require_login();

$pdo = db();
ensure_user_profile_columns($pdo);
ensure_audit_tables($pdo);
$cid = (int)($_SESSION['company_id'] ?? 0);
$uid = (int)($_SESSION['user_id'] ?? 0);

$stmt = $pdo->prepare("SELECT id, company_id, name, email, phone, avatar_path, role FROM users WHERE id=? AND company_id=? LIMIT 1");
$stmt->execute([$uid, $cid]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$user) {
  http_response_code(404);
  exit('User not found');
}

$err = '';
$ok = '';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  csrf_check();
  $name = trim($_POST['name'] ?? '');
  $email = trim($_POST['email'] ?? '');
  $phone = trim($_POST['phone'] ?? '');
  $password = (string)($_POST['password'] ?? '');
  $password2 = (string)($_POST['password_confirm'] ?? '');
  $avatarPath = $user['avatar_path'] ?? null;

  if ($name === '' || $email === '') {
    $err = 'الاسم والبريد الإلكتروني مطلوبان';
  } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    $err = 'البريد الإلكتروني غير صحيح';
  } else {
    $dup = $pdo->prepare("SELECT id FROM users WHERE company_id=? AND email=? AND id<>? LIMIT 1");
    $dup->execute([$cid, $email, $uid]);
    if ($dup->fetchColumn()) {
      $err = 'البريد الإلكتروني مستخدم من قبل';
    } elseif ($password !== '' && $password !== $password2) {
      $err = 'تأكيد كلمة المرور غير مطابق';
    } else {
      if (!empty($_FILES['avatar']['name'] ?? '')) {
        $allowed = [
          'image/jpeg' => 'jpg',
          'image/png' => 'png',
          'image/webp' => 'webp',
          'image/svg+xml' => 'svg',
        ];
        $mime = mime_content_type($_FILES['avatar']['tmp_name']);
        if (!isset($allowed[$mime])) {
          $err = 'صيغة صورة المستخدم غير مدعومة';
        } elseif (($_FILES['avatar']['size'] ?? 0) > 2 * 1024 * 1024) {
          $err = 'حجم صورة المستخدم يجب ألا يزيد عن 2 ميجابايت';
        } else {
          $dir = __DIR__ . '/../uploads/users';
          if (!is_dir($dir)) @mkdir($dir, 0775, true);
          $file = 'user_' . $uid . '_' . time() . '.' . $allowed[$mime];
          $dest = $dir . '/' . $file;
          if (!move_uploaded_file($_FILES['avatar']['tmp_name'], $dest)) {
            $err = 'تعذر رفع صورة المستخدم';
          } else {
            $avatarPath = '/uploads/users/' . $file;
          }
        }
      }

      if ($err === '') {
        $fields = ["name=?", "email=?", "phone=?", "avatar_path=?"];
        $params = [$name, $email, ($phone !== '' ? $phone : null), $avatarPath, $uid, $cid];
        $sql = "UPDATE users SET " . implode(', ', $fields);
        if ($password !== '') {
          $sql .= ", password_hash=?";
          array_splice($params, 4, 0, [password_hash($password, PASSWORD_DEFAULT)]);
        }
        $sql .= " WHERE id=? AND company_id=?";
        $pdo->prepare($sql)->execute($params);

        $_SESSION['user_name'] = $name;
        $ok = 'تم تحديث الملف التعريفي بنجاح';
        audit_log($pdo, [
          'company_id' => $cid,
          'user_id' => $uid,
          'module' => 'users',
          'action' => 'UPDATE_PROFILE',
          'entity_type' => 'user',
          'entity_id' => (string)$uid,
          'description' => 'تعديل الملف التعريفي للمستخدم',
        ]);

        $stmt->execute([$uid, $cid]);
        $user = $stmt->fetch(PDO::FETCH_ASSOC);
      }
    }
  }
}

render_layout('الملف التعريفي للمستخدم', "الرئيسية <span class='mx-1'>/</span> الملف التعريفي للمستخدم", function() use ($user, $err, $ok) {
  $avatar = trim((string)($user['avatar_path'] ?? '')) ?: '/assets/img/favicon.png';
?>
<div class="card cardx mt-3">
  <div class="p-3 p-md-4">
    <div class="d-flex flex-wrap align-items-center justify-content-between gap-3 mb-4">
      <div>
        <div class="fw-bold fs-5">الملف التعريفي للمستخدم</div>
        <div class="text-secondary small">يمكنك تعديل رقم الموبايل والبريد الإلكتروني وكلمة المرور وصورة المستخدم من هنا.</div>
      </div>
      <div class="d-flex align-items-center gap-3">
        <img src="<?= h($avatar) ?>" alt="avatar" style="width:72px;height:72px;border-radius:22px;object-fit:cover;border:1px solid #e2e8f0;background:#fff;">
        <div>
          <div class="fw-bold"><?= h($user['name']) ?></div>
          <div class="small text-secondary"><?= h($user['role']) ?></div>
        </div>
      </div>
    </div>

    <?php if($err): ?><div class="alert alert-danger"><?= h($err) ?></div><?php endif; ?>
    <?php if($ok): ?><div class="alert alert-success"><?= h($ok) ?></div><?php endif; ?>

    <form method="post" enctype="multipart/form-data">
      <?= csrf_field() ?>
      <div class="row g-3">
        <div class="col-12 col-md-6">
          <label class="form-label">اسم المستخدم</label>
          <input class="form-control" name="name" value="<?= h($user['name'] ?? '') ?>" required>
        </div>
        <div class="col-12 col-md-6">
          <label class="form-label">البريد الإلكتروني</label>
          <input class="form-control" name="email" type="email" value="<?= h($user['email'] ?? '') ?>" required>
        </div>
        <div class="col-12 col-md-6">
          <label class="form-label">رقم الموبايل</label>
          <input class="form-control" name="phone" value="<?= h($user['phone'] ?? '') ?>">
        </div>
        <div class="col-12 col-md-6">
          <label class="form-label">صورة المستخدم</label>
          <input class="form-control" name="avatar" type="file" accept=".jpg,.jpeg,.png,.webp,.svg,image/*">
        </div>
        <div class="col-12 col-md-6">
          <label class="form-label">كلمة المرور الجديدة</label>
          <input class="form-control" name="password" type="password" placeholder="اتركها فارغة إذا لم ترغب بالتغيير">
        </div>
        <div class="col-12 col-md-6">
          <label class="form-label">تأكيد كلمة المرور الجديدة</label>
          <input class="form-control" name="password_confirm" type="password">
        </div>
      </div>
      <div class="d-flex justify-content-end gap-2 mt-4">
        <button class="btn btn-dark"><i class="bi bi-check2-circle"></i> حفظ التعديلات</button>
        <a class="btn btn-outline-secondary" href="<?= url('/index.php') ?>">رجوع</a>
      </div>
    </form>
  </div>
</div>
<?php });
