# PUT /api/v2/scheduled/notifications

<div id="bkmrk-" style="direction: rtl; font-family: Vazir,Tahoma; text-align: justify; line-height: 1.85;"></div>### Route Info

<div id="bkmrk-method-endpoint-cont" style="direction: rtl; font-family: Vazir,Tahoma; text-align: justify; line-height: 1.85;"><div style="text-align: center;"><table border="1" style="width: 100%; margin: auto; border-collapse: collapse; text-align: center; border: 1px solid #ddd;"><tbody><tr style="background: #f4f4f4; font-weight: bold;"><td style="padding: 10px;">Method</td><td style="padding: 10px;">Endpoint</td><td style="padding: 10px;">Controller</td><td style="padding: 10px;">Middleware</td></tr><tr><td style="direction: ltr; padding: 10px;">PUT</td><td style="direction: ltr; padding: 10px;">/api/v2/scheduled/notifications</td><td style="direction: ltr; padding: 10px;">OfficialController@updateScheduledNotifications</td><td style="direction: ltr; padding: 10px;">authWithJwt</td></tr></tbody></table>

</div></div>### تحلیل دقیق عملکرد (Deep Functionality Analysis)

این متد یک **بروزرسانی کامل (Full Update)** روی جدول `scheduled_notifications` انجام می‌دهد. نکته حیاتی اینجاست که حتی فیلدهای سیستمی مانند `branch` و `operator` نیز بازنویسی می‌شوند.

**منطق دقیق کد:**

<div id="bkmrk-%D8%A7%D8%B3%D8%AA%D8%AE%D8%B1%D8%A7%D8%AC-%D9%88%D8%A7%D8%A8%D8%B3%D8%AA%DA%AF%DB%8C%E2%80%8C%D9%87%D8%A7%DB%8C-" style="direction: rtl; font-family: Vazir,Tahoma; text-align: justify; line-height: 1.85;">1. **استخراج وابستگی‌های سیستمی (System Dependencies):**   
    متد مقادیر `branch` و `operator` را از آبجکت `$request` می‌خواند.   
    <span style="color: #d32f2f; font-size: 0.9em;">⚠️ نکته امنیتی:</span> این مقادیر معمولاً توسط میدل‌ور `authWithJwt` تزریق می‌شوند، اما کد کنترلر کورکورانه آن‌ها را آپدیت می‌کند (`$request->get('operator')->id`). این یعنی مالکیت رکورد به "اپراتور و شعبه جاری" تغییر می‌کند.
2. **تبدیل داده‌ها (Data Transformation):**   
    فیلدهای `recipients` و `devices` الزاماً با `json_encode` تبدیل می‌شوند. فیلد `mobiles` منطق شرطی دارد: اگر مقدار داشته باشد تبدیل به JSON می‌شود، در غیر این صورت `NULL` ذخیره می‌شود.
3. **مدیریت زمان (Timestamping):**   
    چون از `DB::table` استفاده شده، `updated_at` خودکار نیست و با `Carbon::now()` دقیقاً در لحظه آپدیت تنظیم می‌شود.

</div>### پارامترهای پردازش شده (Processed Parameters)

این جدول شامل تمام داده‌هایی است که در آرایه `$update` استفاده شده‌اند، چه توسط کاربر ارسال شوند و چه توسط سیستم تزریق شوند.

<div id="bkmrk-key-%2F-variable-sourc" style="direction: rtl; font-family: Vazir,Tahoma; text-align: justify; line-height: 1.85;"><div style="text-align: center;"><table border="1" style="width: 100%; border-collapse: collapse; text-align: center;"><thead><tr style="background: #f4f4f4;"><th style="padding: 8px;">Key / Variable</th><th style="padding: 8px;">Source Type</th><th style="padding: 8px;">Required</th><th style="padding: 8px;">Logic / Transformation</th></tr></thead><tbody><tr><td style="direction: ltr;">id</td><td style="direction: ltr;">Integer</td><td>Yes</td><td>در شرط `where` استفاده می‌شود.</td></tr><tr><td style="direction: ltr;">branch</td><td style="direction: ltr;">Integer</td><td>Yes\*</td><td>مستقیماً در دیتابیس ذخیره می‌شود (معمولاً تزریق شده توسط Middleware).</td></tr><tr><td style="direction: ltr;">operator</td><td style="direction: ltr;">Object (User)</td><td>Yes\*</td><td>آبجکت یوزر دریافت شده و `->id` آن استخراج و ذخیره می‌شود.</td></tr><tr><td style="direction: ltr;">recipients</td><td style="direction: ltr;">Array</td><td>Yes</td><td>توسط `json_encode` به رشته تبدیل می‌شود.</td></tr><tr><td style="direction: ltr;">devices</td><td style="direction: ltr;">Object/Array</td><td>Yes</td><td>توسط `json_encode` به رشته تبدیل می‌شود.</td></tr><tr><td style="direction: ltr;">object</td><td style="direction: ltr;">String</td><td>Yes</td><td>بدون تغییر ذخیره می‌شود.</td></tr><tr><td style="direction: ltr;">type</td><td style="direction: ltr;">String</td><td>Yes</td><td>بدون تغییر ذخیره می‌شود.</td></tr><tr><td style="direction: ltr;">period</td><td style="direction: ltr;">String/Int</td><td>Yes</td><td>بدون تغییر ذخیره می‌شود.</td></tr><tr><td style="direction: ltr;">status</td><td style="direction: ltr;">Boolean/Int</td><td>Yes</td><td>بدون تغییر ذخیره می‌شود.</td></tr><tr><td style="direction: ltr;">mobiles</td><td style="direction: ltr;">Array/Null</td><td>No</td><td>اگر وجود داشته باشد `json_encode` می‌شود، وگرنه `NULL`.</td></tr></tbody></table>

</div></div>### ساختار پاسخ‌ها (Response Structures)

#### ✅ Success (200 OK)

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

#### ❌ Error (Exception Captured)

```
{
    "status": false,
    "time": 1732631505,
    "message": "...", // PHP/SQL Error Message
    "trace": [ ... ]
}
```