#P1578
PUT /api/v2/scheduled/notifications
Route Info
| Method | Endpoint | Controller | Middleware |
| PUT | /api/v2/scheduled/notifications | OfficialController@updateScheduledNotifications | authWithJwt |
تحلیل دقیق عملکرد (Deep Functionality Analysis)
این متد برای ویرایش کامل یک اعلان زمانبندی شده موجود استفاده میشود. عملیات بر اساس id دریافتی انجام میشود.
نکات کلیدی پیادهسازی:
- Manual Timestamp Handling:
از آنجایی که از Query Builder (DB::table) به جای Eloquent استفاده شده است، ویژگیtimestampsخودکار لاراول کار نمیکند. بنابراین، زمانupdated_atبه صورت دستی با استفاده ازCarbon::now()مقداردهی و بروز میشود. - Full Overwrite Strategy:
تمام فیلدها (شامل گیرندگان، دستگاهها و متن) مجدداً بازنویسی میشوند. حتی فیلدbranchنیز با شعبه کاربر جاری جایگزین میشود (که تضمین میکند کاربر فقط روی دیتای شعبه خودش اثر میگذارد یا مالکیت را تصاحب میکند). - 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": [ ... ]
}