# نظام التحقق الشامل من حالة المستخدمين والمكاتب العقارية

## نظرة عامة

هذا النظام يوفر تحقق شامل من حالة المستخدمين والمكاتب العقارية، ويتضمن:

- التحقق من تفعيل الحساب (`is_activated`)
- التحقق من حالة المكتب العقاري (`officeStatus`)
- التحقق من حالة الاشتراك (`subscriptionStatus`)
- عرض رد الإدارة (`notetext` و `suspensionReason`)
- معلومات المحفظة للمستخدمين الموقوفين

## الملفات المتضمنة

### 1. صفحات التوقيف

- **`user_suspended.php`**: صفحة توقيف المستخدم العادي
- **`office_suspended.php`**: صفحة توقيف المكتب العقاري
- **`subscription_expired.php`**: صفحة انتهاء الاشتراك مع خيارات التجديد

### 2. ملفات التحقق

- **`auth_check.php`**: ملف التحقق الشامل القابل للتضمين
- **`../redirect.php`**: ملف التوجيه المحدث مع نظام التحقق

## كيفية الاستخدام

### 1. التحقق التلقائي في redirect.php

```php
// يتم التحقق تلقائياً عند استخدام redirect.php
require_once 'includes/redirect.php';
```

### 2. التحقق اليدوي في الصفحات

```php
// في بداية أي صفحة تتطلب تسجيل دخول
require_once 'includes/check/auth_check.php';

// للتحقق العام
$auth_data = quickAuthCheck();

// للتحقق من المكاتب العقارية فقط
$auth_data = officeAuthCheck();

// للتحقق من المستخدمين العاديين فقط
$auth_data = userAuthCheck();

// للتحقق من الشركات
$auth_data = companyAuthCheck();
```

### 3. استخدام البيانات المُرجعة

```php
$auth_data = quickAuthCheck();

// معلومات المستخدم
$user = $auth_data['user'];
echo $user['name']; // اسم المستخدم
echo $user['email']; // البريد الإلكتروني

// معلومات المكتب (إن وجد)
if ($auth_data['office']) {
    $office = $auth_data['office'];
    echo $office['officeName']; // اسم المكتب
    echo $office['officeStatus']; // حالة المكتب
}

// معلومات المحفظة (إن وجدت)
if ($auth_data['wallet']) {
    $wallet = $auth_data['wallet'];
    echo $wallet['balance']; // الرصيد المتاح
    echo $wallet['hold_balance']; // الرصيد المحجوز
}
```

## حالات التحقق

### 1. حالات المستخدم

- **`active`**: المستخدم نشط ويمكنه الوصول
- **`suspended`**: المستخدم موقوف (`is_activated = 0`)
- **`not_found`**: المستخدم غير موجود
- **`error`**: خطأ في النظام

### 2. حالات المكتب العقاري

- **`active`**: المكتب نشط والاشتراك ساري
- **`office_suspended`**: المكتب موقوف (`officeStatus = 'suspended'`)
- **`office_rejected`**: المكتب مرفوض (`officeStatus = 'rejected'`)
- **`subscription_expired`**: الاشتراك منتهي (`subscriptionStatus = 'expired'`)
- **`subscription_suspended`**: الاشتراك موقوف (`subscriptionStatus = 'suspended'`)
- **`office_pending`**: المكتب قيد المراجعة (`officeStatus = 'pending'`)
- **`no_office`**: لا يوجد مكتب مرتبط بالمستخدم

## التوجيه التلقائي

### المستخدمون الموقوفون
- يتم توجيههم إلى `includes/check/user_suspended.php`
- يعرض رد الإدارة من حقل `notetext`

### المكاتب الموقوفة
- يتم توجيههم إلى `includes/check/office_suspended.php`
- يعرض رد الإدارة من حقل `suspensionReason`
- يعرض معلومات المحفظة مع إمكانية سحب الأموال

### الاشتراكات المنتهية
- يتم توجيههم إلى `includes/check/subscription_expired.php`
- يعرض خيارات تجديد الاشتراك
- يعرض معلومات المحفظة

## المميزات الإضافية

### 1. معلومات المحفظة
- عرض الرصيد المتاح والمحجوز
- عدد المعاملات المعلقة
- إمكانية الوصول للمحفظة حتى لو كان المكتب موقوفاً

### 2. خيارات التجديد
- عرض خطط الاشتراك المختلفة
- حساب الخصومات
- توجيه لصفحة الدفع

### 3. معلومات الاتصال
- أرقام الهاتف والواتساب
- البريد الإلكتروني
- ساعات العمل

## أمثلة للاستخدام

### مثال 1: صفحة dashboard للمكتب العقاري

```php
<?php
require_once 'includes/check/auth_check.php';

// التحقق من المكتب العقاري
$auth_data = officeAuthCheck();

$user = $auth_data['user'];
$office = $auth_data['office'];
$wallet = $auth_data['wallet'];
?>

<h1>مرحباً <?php echo $user['name']; ?></h1>
<h2>مكتب: <?php echo $office['officeName']; ?></h2>

<?php if ($office['officeStatus'] == 'pending'): ?>
    <div class="alert alert-warning">
        مكتبك قيد المراجعة من قبل الإدارة
    </div>
<?php endif; ?>
```

### مثال 2: صفحة للمستخدمين العاديين فقط

```php
<?php
require_once 'includes/check/auth_check.php';

// السماح للمستخدمين العاديين فقط
$auth_data = userAuthCheck();

$user = $auth_data['user'];
?>

<h1>لوحة تحكم المستخدم</h1>
<p>مرحباً <?php echo $user['name']; ?></p>
```

### مثال 3: التحقق المخصص

```php
<?php
require_once 'includes/check/auth_check.php';

// التحقق من أنواع مستخدمين محددة
$auth_data = performAuthCheck(['مكتب عقاري', 'شركة صيانة مباني']);
?>
```

## ملاحظات مهمة

1. **الأمان**: جميع الاستعلامات تستخدم prepared statements
2. **الأداء**: يتم جلب البيانات مرة واحدة فقط
3. **المرونة**: يمكن تخصيص التحقق حسب نوع الصفحة
4. **التسجيل**: جميع الأخطاء يتم تسجيلها في error log
5. **التوافق**: يعمل مع النظام الحالي دون تعديلات كبيرة

## التخصيص

يمكن تخصيص النظام عبر:

1. **تعديل رسائل التوقيف** في ملفات الصفحات
2. **إضافة حالات جديدة** في دوال التحقق
3. **تخصيص التوجيه** حسب نوع المستخدم
4. **تعديل تصميم الصفحات** حسب الهوية البصرية

## الدعم

للمساعدة أو الاستفسارات، يرجى مراجعة:
- ملفات التوثيق في المشروع
- تسجيل الأخطاء في error log
- اختبار الوظائف في بيئة التطوير أولاً 