Skip to main content
#P1578

PUT /api/v2/scheduled/notifications

Route Info

Method Endpoint Controller Middleware
PUT /api/v2/scheduled/notifications OfficialController@updateScheduledNotifications authWithJwt

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

این متد برای ویرایش کامل یک اعلان زمان‌بندی شده موجود استفاده می‌شود. عملیات بر اساس id دریافتی انجام می‌شود.

نکات کلیدی پیاده‌سازی:

  1. Manual Timestamp Handling:
    از آنجایی که از Query Builder (DB::table) به جای Eloquent استفاده شده است، ویژگی timestamps خودکار لاراول کار نمی‌کند. بنابراین، زمان updated_at به صورت دستی با استفاده از Carbon::now() مقداردهی و بروز می‌شود.
  2. Full Overwrite Strategy:
    تمام فیلدها (شامل گیرندگان، دستگاه‌ها و متن) مجدداً بازنویسی می‌شوند. حتی فیلد branch نیز با شعبه کاربر جاری جایگزین می‌شود (که تضمین می‌کند کاربر فقط روی دیتای شعبه خودش اثر می‌گذارد یا مالکیت را تصاحب می‌کند).
  3. JSON Re-encoding:
    مشابه متد ثبت، فیلدهای آرایه‌ای (recipients, devices, mobiles) مجدداً به رشته JSON تبدیل می‌شوند.

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

Parameter Type Required Description
id Integer Yes شناسه (ID) رکورد مورد نظر برای ویرایش.
status Boolean/Int Yes وضعیت جدید اعلان (1 برای فعال، 0 برای غیرفعال).
recipients Array Yes لیست جدید گیرندگان (جایگزین لیست قبلی می‌شود).
devices Object Yes تنظیمات دستگاه‌ها.
object String Yes محتوای اعلان.
type String Yes نوع اعلان.
period String/Int Yes دوره زمانی ارسال.
mobiles Array No لیست موبایل‌ها (اختیاری).

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

✅ Success (200 OK)

در صورت آپدیت موفق:

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

❌ Error (Exception Captured)

در صورت بروز خطا (مثلاً اگر ID وجود نداشته باشد، خطای دیتابیس رخ نمی‌دهد اما رکوردی هم آپدیت نمی‌شود، مگر اینکه ساختار دیتابیس جلوی دیتای غلط را بگیرد):

{
    "status": false,
    "time": 1732631505,
    "message": "...",
    "trace": [ ... ]
}