# تحديث نظام المفضلة - Migration Guide

## ✅ التغييرات المنفذة

تم استبدال جميع استخدامات الجداول القديمة (`project_favs` و `likes`) بنظام المفضلة الجديد الموحد.

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

### 1. Controllers

#### `app/Http/Controllers/Front/User/ProjectUserController.php`
- ✅ استبدال `ProjectFav` بـ `Favorite`
- ✅ تحديث دالة `addFav()` لاستخدام `toggleFavorite()`
- ✅ تحديث دالة `favsProjects()` لاستخدام النظام الجديد

**قبل:**
```php
$fav = ProjectFav::where('user_id', $user->id)->where('project_id', $project->id)->first();
if ($fav) {
    $fav->delete();
} else {
    $fav = new ProjectFav();
    $fav->user_id = $user->id;
    $fav->project_id = $project->id;
    $fav->save();
}
```

**بعد:**
```php
$isFavorited = $project->toggleFavorite($user->id);
```

#### `app/Http/Controllers/Front/LikeController.php`
- ✅ استبدال `Like` بنظام `Favoritable`
- ✅ تحديث دالة `like()` لاستخدام `addToFavorites()`
- ✅ تحديث دالة `unlike()` لاستخدام `removeFromFavorites()`

**قبل:**
```php
$like = Like::firstOrCreate([
    'user_id' => $user->id,
    'work_id' => $gallery->id,
]);
```

**بعد:**
```php
$gallery->addToFavorites($user->id);
```

### 2. Models

#### `app/Models/User.php`
- ✅ إزالة دالة `favProjects()` القديمة
- ✅ إزالة دالة `likes()` القديمة
- ✅ إضافة تعليقات توضيحية للاستخدام الجديد

**الاستخدام الجديد:**
```php
// للحصول على المشاريع المفضلة
$user->favorites()->where('favoritable_type', Project::class)->get()

// للحصول على أعمال المعرض المفضلة
$user->favorites()->where('favoritable_type', Gallery::class)->get()
```

#### `app/Models/Gallery.php`
- ✅ إزالة دالة `likes()` القديمة
- ✅ إزالة دالة `likesCount()` القديمة (موجودة في Favoritable trait)
- ✅ إزالة دالة `isLikedByUser()` القديمة (موجودة في Favoritable trait)

**الاستخدام الجديد:**
```php
// عدد المفضلة
$gallery->favoritesCount()

// التحقق من المفضلة
$gallery->isFavoritedBy($userId)
```

### 3. Blade Templates

#### `resources/views/front/user/gallery/single.blade.php`
- ✅ استبدال `$item->likesCount()` بـ `$item->favoritesCount()`
- ✅ استبدال `$item->isLikedByUser()` بـ `$item->isFavoritedBy()`

#### `resources/views/front/user/gallery/_work_content.blade.php`
- ✅ استبدال `$item->likesCount()` بـ `$item->favoritesCount()`
- ✅ استبدال `$item->isLikedByUser()` بـ `$item->isFavoritedBy()`

#### `resources/views/front/freelancer/single_work.blade.php`
- ✅ استبدال `$item->likesCount()` بـ `$item->favoritesCount()`
- ✅ استبدال `$item->isLikedByUser()` بـ `$item->isFavoritedBy()`

## 🔄 API Changes

### Routes لم تتغير
- ✅ `POST /user/favorites/toggle-project/{projectId}` (كان `/user/project/fav/{id}`)
- ✅ `POST /user/like` (لا يزال يعمل)
- ✅ `DELETE /user/unlike` (لا يزال يعمل)

### Response Format الجديد

**للمشاريع:**
```json
{
    "success": true,
    "is_favorited": true,
    "action": "added",
    "message": "تمت الإضافة للمفضلة"
}
```

**لأعمال المعرض:**
```json
{
    "status": "liked",
    "is_favorited": true,
    "message": "تمت الإضافة للمفضلة"
}
```

## 📊 الجداول القديمة

### ⚠️ الجداول التالية لم تعد مستخدمة:
- `project_favs` - يمكن حذفها بعد التأكد من عمل النظام الجديد
- `likes` - يمكن حذفها بعد التأكد من عمل النظام الجديد

### 🗑️ لحذف الجداول القديمة (اختياري):

```bash
# إنشاء migration لحذف الجداول القديمة
php artisan make:migration drop_old_favorites_tables

# في ملف Migration:
public function up()
{
    Schema::dropIfExists('project_favs');
    Schema::dropIfExists('likes');
}

public function down()
{
    // يمكن إعادة إنشاء الجداول إذا لزم الأمر
}
```

## 🧪 الاختبار

### تأكد من:
1. ✅ إضافة مشروع للمفضلة
2. ✅ إزالة مشروع من المفضلة
3. ✅ إضافة عمل معرض للمفضلة
4. ✅ إزالة عمل معرض من المفضلة
5. ✅ عرض المفضلة حسب النوع
6. ✅ عدد المفضلة يظهر بشكل صحيح

## 🚀 الخطوات التالية

1. **تشغيل Migration:**
   ```bash
   php artisan migrate
   ```

2. **اختبار النظام الجديد:**
   - اختبر إضافة/إزالة المفضلة للمشاريع
   - اختبر إضافة/إزالة المفضلة لأعمال المعرض
   - تحقق من عرض المفضلة

3. **بعد التأكد من عمل النظام:**
   - يمكن حذف الجداول القديمة
   - يمكن حذف Models القديمة (`ProjectFav.php`, `Like.php`)

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

- ✅ **لا يتم نقل البيانات القديمة** - النظام الجديد يبدأ من الصفر
- ✅ **الـ Routes القديمة لا تزال تعمل** - تم تحديثها للاستخدام الداخلي للنظام الجديد
- ✅ **JavaScript لا يحتاج تعديل** - الـ API responses متوافقة
- ✅ **النظام الجديد يدعم 3 أنواع** - Projects, Users, Gallery

## 📚 للمزيد من المعلومات

راجع ملف `FAVORITES_SYSTEM.md` للحصول على:
- شرح كامل للنظام
- أمثلة على الاستخدام
- كود JavaScript جاهز
- أمثلة على Blade templates
