#P1578
PUT /api/v2/scheduled/notifications
Route Info
| Method | Endpoint | Controller | Middleware |
| PUT | /api/v2/scheduled/notifications | OfficialController@updateScheduledNotifications | authWithJwt |
تحلیل دقیق عملکرد (Deep Functionality Analysis)
این متد براییک ویرایشبروزرسانی کامل (Full Update) یکروی اعلان زمانبندی شده موجود استفاده میشود. عملیات بر اساسجدول idscheduled_notifications دریافتی انجام میشود.دهد. نکته حیاتی اینجاست که حتی فیلدهای سیستمی مانند branch و operator نیز بازنویسی میشوند.
نکاتمنطق کلیدیدقیق پیادهسازی:کد:
ManualاستخراجTimestampوابستگیهایHandling:سیستمی (System Dependencies):ازمتدآنجاییمقادیرکهbranchوoperatorرا ازQueryآبجکتBuilder$requestمیخواند.
⚠️ نکته امنیتی: این مقادیر معمولاً توسط میدلورauthWithJwtتزریق میشوند، اما کد کنترلر کورکورانه آنها را آپدیت میکند ($request->get('operator')->id). این یعنی مالکیت رکورد به "اپراتور و شعبه جاری" تغییر میکند.- تبدیل دادهها (Data Transformation):
فیلدهایrecipientsوdevicesالزاماً باjson_encodeتبدیل میشوند. فیلدmobilesمنطق شرطی دارد: اگر مقدار داشته باشد تبدیل به JSON میشود، در غیر این صورتNULLذخیره میشود. - مدیریت زمان (Timestamping):
چون ازDB::table) به جای Eloquentاستفادهشده است، ویژگیtimestampsخودکار لاراول کار نمیکند. بنابراین، زمانشده،updated_atبهخودکارصورتنیستدستیو بااستفاده ازCarbon::now()مقداردهیدقیقاًودربروزلحظه آپدیت تنظیم میشود. Full Overwrite Strategy:تمام فیلدها (شامل گیرندگان، دستگاهها و متن) مجدداً بازنویسی میشوند. حتی فیلدbranchنیز با شعبه کاربر جاری جایگزین میشود (که تضمین میکند کاربر فقط روی دیتای شعبه خودش اثر میگذارد یا مالکیت را تصاحب میکند).JSON Re-encoding:مشابه متد ثبت، فیلدهای آرایهای (recipients,devices,mobiles) مجدداً به رشته JSON تبدیل میشوند.
پارامترهای ورودیپردازش شده (InputProcessed Parameters)
این جدول شامل تمام دادههایی است که در آرایه $update استفاده شدهاند، چه توسط کاربر ارسال شوند و چه توسط سیستم تزریق شوند.
| Source Type | Required | ||
|---|---|---|---|
| id | Integer | Yes | where استفاده میشود. |
| branch | Integer | Yes* | مستقیماً در دیتابیس ذخیره میشود ( |
| operator | Object (User) | Yes* | آبجکت یوزر دریافت شده و ->id آن استخراج و ذخیره میشود. |
| recipients | Array | Yes | توسط json_encode به رشته تبدیل میشود. |
| devices | Object/Array | Yes | توسط json_encode به رشته تبدیل میشود. |
| object | String | Yes | بدون تغییر ذخیره میشود. |
| type | String | Yes | بدون تغییر ذخیره میشود. |
| period | String/Int | Yes | بدون تغییر ذخیره میشود. |
| status | Boolean/Int | Yes | |
| mobiles | No | json_encode میشود، وگرنه NULL. |
ساختار پاسخها (Response Structures)
✅ Success (200 OK)
در صورت آپدیت موفق:
{
"status": true,
"time": 1732631500
}
❌ Error (Exception Captured)
در صورت بروز خطا (مثلاً اگر ID وجود نداشته باشد، خطای دیتابیس رخ نمیدهد اما رکوردی هم آپدیت نمیشود، مگر اینکه ساختار دیتابیس جلوی دیتای غلط را بگیرد):
{
"status": false,
"time": 1732631505,
"message": "...", // PHP/SQL Error Message
"trace": [ ... ]
}