# دليل إعداد Firebase لـ PHP Dashboard

## نظرة عامة

تم ربط `dashboard.php` وملفات PHP الأخرى بـ Firebase Realtime Database لعرض البيانات المخزنة من تطبيق Flutter.

## الملفات المحدثة

1. ✅ `firebase_service.php` - خدمة Firebase للـ PHP
2. ✅ `config.php` - إضافة إعدادات Firebase
3. ✅ `get_latest_location.php` - جلب آخر موقع من Firebase
4. ✅ `get_locations.php` - جلب المواقع من Firebase
5. ✅ `get_timeline_and_route.php` - جلب المخطط الزمني والمسار من Firebase
6. ✅ `dashboard.php` - عرض الأجهزة والبيانات من Firebase

## خطوات الإعداد

### 1. Firebase Database URL

✅ **تم إعداد الرابط تلقائياً في `config.php`:**

```php
$firebase_database_url = "https://almanara-65382-default-rtdb.firebaseio.com";
```

إذا احتجت لتغيير الرابط، يمكنك:
1. فتح [Firebase Console](https://console.firebase.google.com/)
2. اختيار مشروعك (`almanara-65382`)
3. الذهاب إلى **Realtime Database**
4. نسخ **Database URL** من أعلى الصفحة
5. تحديثه في `config.php`

### 3. التحقق من قواعد الأمان (Security Rules)

تأكد من أن قواعد الأمان في Firebase تسمح بالقراءة:

1. اذهب إلى Firebase Console → Realtime Database → Rules
2. للاختبار، استخدم:
```json
{
  "rules": {
    ".read": true,
    ".write": true
  }
}
```

⚠️ **تحذير**: هذه القواعد غير آمنة للإنتاج!

### 4. تفعيل/تعطيل Firebase

في `config.php`، يمكنك التحكم في استخدام Firebase:

```php
// استخدام Firebase
define('USE_FIREBASE', true);

// أو استخدام MySQL (الطريقة القديمة)
define('USE_FIREBASE', false);
```

## هيكل البيانات في Firebase

البيانات تُخزن بالشكل التالي:

```
locations/
  {device_id}/
    {YYYY-MM-DD}/
      {timestamp_ms}/
        device_id: "..."
        device_name: "..."
        latitude: "..."
        longitude: "..."
        timestamp: "..."
        speed: "..."
        battery: "..."
        ...
```

## اختبار الاتصال

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

1. فتح `dashboard.php` في المتصفح
2. التحقق من ظهور الأجهزة والبيانات
3. فحص Console في المتصفح للأخطاء

أو إنشاء ملف اختبار بسيط:

```php
<?php
require 'config.php';

// اختبار الاتصال
if (FirebaseService::testConnection()) {
    echo "✅ الاتصال بـ Firebase ناجح!";
} else {
    echo "❌ فشل الاتصال بـ Firebase";
}

// اختبار جلب الأجهزة
$devices = FirebaseService::getAllDevices();
echo "<pre>";
print_r($devices);
echo "</pre>";
?>
```

## استكشاف الأخطاء

### المشكلة: لا تظهر الأجهزة في Dashboard

**الحلول:**
1. تحقق من `USE_FIREBASE` في `config.php` (يجب أن يكون `true`)
2. تحقق من Firebase Database URL في `config.php`
3. تحقق من قواعد الأمان في Firebase Console
4. فحص error_log في PHP

### المشكلة: خطأ في الاتصال بـ Firebase

**الحلول:**
1. تحقق من اتصال الإنترنت
2. تحقق من Firebase Database URL
3. تحقق من أن قاعدة البيانات مفعلة في Firebase Console
4. تحقق من قواعد الأمان

### المشكلة: البيانات لا تظهر

**الحلول:**
1. تأكد من أن التطبيق يرسل البيانات إلى Firebase
2. تحقق من هيكل البيانات في Firebase Console
3. تحقق من أن `device_id` و `device_name` موجودان في البيانات

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

1. **المجموعات (Groups)**: لا تزال تُخزن في MySQL لأنها بيانات إدارية
2. **الأماكن المفضلة (User Places)**: لا تزال في MySQL
3. **بيانات المستخدمين**: لا تزال في MySQL

## التبديل بين Firebase و MySQL

يمكنك التبديل بسهولة عبر تغيير `USE_FIREBASE` في `config.php`:

- `true` = استخدام Firebase
- `false` = استخدام MySQL

## الدعم

إذا واجهت أي مشاكل، تحقق من:
1. `error_log` في PHP
2. Console في المتصفح
3. Firebase Console → Realtime Database → Data

