Skip to main content
#P1577

POST /api/v2/scheduled/notifications

Route Info

Method Endpoint Controller Middleware
POST /api/v2/scheduled/notifications OfficialController@storeScheduledNotifications authWithJwt

تحلیل دقیق عملکرد (Deep Functionality Analysis)

این متد برای ذخیره‌سازی رکوردها در جدول scheduled_notifications استفاده می‌شود. برخلاف بسیاری از متدها که از Eloquent Model استفاده می‌کنند، این متد از DB::table برای درج مستقیم (Raw Insert) استفاده می‌کند که سربار کمتری دارد.

مراحل اجرای کد:

  1. Data Serialization (سریال‌سازی داده‌ها):
    ورودی‌های آرایه‌ای یا آبجکت مانند recipients (گیرندگان)، devices (دستگاه‌ها) و mobiles (شماره‌های همراه) قبل از ذخیره شدن در دیتابیس، توسط تابع json_encode به رشته JSON تبدیل می‌شوند.
  2. Auth Context Injection:
    شناسه شعبه (branch) و شناسه اپراتور ثبت‌کننده (operator->id) مستقیماً از آبجکت $request استخراج می‌شوند. این یعنی این مقادیر توسط میدل‌ور authWithJwt در ریکوئست تزریق شده‌اند و کاربر نمی‌تواند آنها را جعل کند.
  3. Database Insert:
    داده‌ها در جدول درج می‌شوند. نکته مهم این است که هیچگونه Validation (اعتبارسنجی) صریحی در ابتدای تابع دیده نمی‌شود. فرض بر این است که کلاینت داده‌ها را کامل ارسال کرده است. اگر پارامترهای اجباری نرسند، در سطح دیتابیس یا هنگام دسترسی به پراپرتی‌ها (مثل $request->recipients) خطا رخ خواهد داد.

پارامترهای ورودی (Input Parameters)

Parameter Type Required Description
recipients Array Yes آرایه‌ای از شناسه‌های گیرندگان یا گروه‌های کاربری (ذخیره به صورت JSON).
devices Object/Array Yes تنظیمات دستگاه‌های هدف (مثلاً {"android": true}).
object String/Mixed Yes محتوای اصلی اعلان یا شناسه آبجکت مرتبط.
type String Yes نوع اعلان (مثلاً 'system', 'alert', 'news').
period String/Int Yes زمان‌بندی ارسال (فرمت آن وابسته به لاجیک کرون‌جاب سیستم است).
mobiles Array No لیست شماره موبایل‌ها (اختیاری).

ساختار پاسخ‌ها (Response Structures)

✅ Success (200 OK)

در صورت درج موفقیت‌آمیز:

{
    "status": true,
    "time": 1732631200
}

❌ Error (Exception Captured)

در صورت بروز هرگونه خطا (مثلاً خطای دیتابیس یا نبود فیلد اجباری):

{
    "status": false,
    "time": 1732631205,
    "message": "23000 : SQLSTATE[23000]: Integrity constraint violation...",
    "trace": [ ... ] // Stack trace کامل خطا
}