# العروض، الشاشة الرئيسية، والإشعارات

## GET v1/offers/active?branch_id=&specialty_id= (عام)

العروض النشطة (`is_active=true`) وضمن نافذة `starts_at`/`ends_at` الحالية. أي عمود
استهداف فاضي (`branch_id`, `specialty_id`, `doctor_id` = null) يبقى العرض عام لكل المستخدمين
بغض النظر عن الفلاتر. Controller: `App\Http\Controllers\Api\V1\Clinic\OfferController`.

```json
{
  "success": true, "code": "OK", "message": "تمت العملية بنجاح",
  "data": [
    {
      "id": 1, "title": "Grand Opening Discount",
      "description": "15% off any consultation or visit for new patients this month.",
      "discount_type": "percentage", "discount_value": 15,
      "starts_at": "2026-09-01T15:22:26+03:00", "ends_at": "2026-10-04T15:22:26+03:00"
    }
  ],
  "meta": {}, "errors": null
}
```

## GET v1/home (عام)

نداء واحد للشاشة الرئيسية: تخصصات + دكاترة "مميزين" (الأعلى تقييمًا حاليًا، لعدم وجود
علامة تمييز مخصصة بعد) + عروض نشطة. Controller: `App\Http\Controllers\Api\V1\HomeController`.

```json
{
  "success": true, "code": "OK", "message": "تمت العملية بنجاح",
  "data": {
    "specialties": [ { "id": 1, "name": "الباطنة", "slug": "internal_medicine" } ],
    "featured_doctors": [
      { "id": 1, "name": "Dr. Ahmed Hassan", "photo_url": null, "specialty": { "id": 1, "name": "الباطنة" }, "years_experience": 15, "average_rating": 5 }
    ],
    "active_offers": [ { "id": 1, "title": "Grand Opening Discount", "...": "..." } ]
  },
  "meta": {}, "errors": null
}
```

## الإشعارات (محمية — Authorization مطلوب)

Controller: `App\Http\Controllers\Api\V1\NotificationController`. نفس جدول الإشعارات
القياسي في Laravel (`notifications` table)، لكن للمريض (`User`) بدل الأدمن.

### GET v1/notifications?page=

```json
{
  "success": true, "code": "OK", "message": "تمت العملية بنجاح",
  "data": [
    {
      "id": "a5909632-ab49-4a51-909f-80c5dab0e46f",
      "type": "clinic.chat.message",
      "title": "رسالة جديدة", "message": "لديك رسالة جديدة من د. أحمد",
      "url": null, "read_at": null, "created_at": "2026-09-11T00:59:47+03:00"
    }
  ],
  "meta": { "pagination": { "current_page": 1, "per_page": 20, "total": 1, "last_page": 1 } },
  "errors": null
}
```

### GET v1/notifications/unread-count

```json
{ "success": true, "code": "OK", "message": "تمت العملية بنجاح", "data": { "count": 1 }, "meta": {}, "errors": null }
```

### POST v1/notifications/{id}/read

بترجع نفس شكل عنصر الإشعار بعد ما `read_at` يتحدّث. لو الإشعار مش بتاع المستخدم ده،
الاستعلام بيرجع 404 تلقائيًا (لأنه بيتفلتر على إشعارات المستخدم بس).

### POST v1/notifications/read-all

بتعلّم كل الإشعارات غير المقروءة كمقروءة، وترجع `204 NO_CONTENT` (من غير `data`).
