# POST /v2/travel_requests/status/{id}

# Change Request Status

این اندپوینت برای **تغییر وضعیت** یک درخواست سفر و همچنین **تخصیص اپراتور** مسئول استفاده می‌شود.   
نکته مهم در این متد، منطق شرطی برای ثبت شماره فاکتور (`reference\_id`) است که تنها در وضعیت خاصی (وضعیت ۴) اعمال می‌شود.

<div class="api-docs" id="bkmrk-">  ---

</div>## Update Status &amp; Assign Operator

<div class="api-docs" id="bkmrk-url%3A-%2Fv2%2Ftravel_requ"><div class="endpoint-info"><div>**URL:** `/v2/travel_requests/status/{id}`</div><div>**Method:** <span class="method-post">POST</span></div><div>**Controller:** TravelRequestsController@changeStatus</div></div></div>### Body Parameters

<div class="api-docs" id="bkmrk-parameter-type-descr"><table class="schema-table" dir="rtl"><thead><tr><th>Parameter</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>status</td><td>integer</td><td>**(الزامی)** کد وضعیت جدید درخواست.</td></tr><tr><td>operator\_id</td><td>integer</td><td>**(اختیاری)** شناسه اپراتور مسئول رسیدگی. اگر مقدار خالی یا `0` ارسال شود، در دیتابیس `NULL` ثبت می‌شود.</td></tr><tr><td>reference\_id</td><td>integer</td><td>**(شرطی)** شناسه فاکتور صادر شده. این فیلد تنها زمانی در دیتابیس آپدیت می‌شود که `status` برابر با **4** باشد.</td></tr></tbody></table>

</div>### Logic Details

<div class="api-docs" id="bkmrk-%D8%A2%D9%85%D8%A7%D8%AF%D9%87%E2%80%8C%D8%B3%D8%A7%D8%B2%DB%8C-%D8%AF%D8%A7%D8%AF%D9%87%E2%80%8C%D9%87%D8%A7%3A-">1. **آماده‌سازی داده‌ها:**
    - مقدار `operator_id` بررسی می‌شود؛ در صورت وجود مقدار معتبر ثبت می‌شود، در غیر این صورت (استفاده از Elvis Operator `?:`) مقدار `NULL` لحاظ می‌شود.
    - مقدار `status` مستقیماً از ورودی خوانده می‌شود.
2. **شرط ثبت فاکتور (Reference Logic):**   
    سیستم تنها در صورتی فیلد `reference_id` را آپدیت می‌کند که دو شرط زیر همزمان برقرار باشند: 
    - وضعیت جدید (`status`) برابر با **4** باشد.
    - مقدار `reference\_id` در ورودی ارسال شده و دارای مقدار باشد.
    
    *در غیر این صورت، حتی اگر `reference\_id` ارسال شود، نادیده گرفته می‌شود.*
3. **به‌روزرسانی دیتابیس:** عملیات با استفاده از `Query Builder` روی جدول `travel\_requests` انجام می‌شود.

</div>### Flowchart (Status Change Logic)

<div class="api-docs" id="bkmrk-start-request-%E2%86%93-set-"><div class="flowchart"><div class="flow-item">Start Request</div><div class="flow-arrow">↓</div><div class="flow-item-process">Set Operator  
(Val or NULL)</div><div class="flow-arrow">↓</div><div class="flow-item-decision">Status == 4 ?</div><div style="display: flex; justify-content: space-between; margin-top: 10px;"><div style="width: 45%; text-align: center;"><div class="flow-arrow-label-left">Yes</div><div class="flow-item-decision" style="font-size: 0.8em; margin-top: 5px;">Has Ref ID?</div><div style="display: flex; justify-content: center; margin-top: 5px;"><div class="flow-arrow-label-left" style="margin: 0 5px;">Yes</div></div><div class="flow-item-process" style="font-size: 0.8em; background-color: #e8f5e9;">Add reference_id  
to update list</div></div><div style="width: 45%; text-align: center;"><div class="flow-arrow-label-right">No</div><div class="flow-item-process" style="font-size: 0.8em; opacity: 0.6;">Ignore reference_id</div></div></div><div class="flow-arrow">↓</div><div class="flow-item-process" style="background-color: #fff3e0;">**DB Update**  
Update travel_requests WHERE id = $id</div><div class="flow-arrow">↓</div><div class="flow-item-success">Return Success JSON</div></div></div>### Response Example

```json
{
  "payload": {
    "status": true
  },
  "meta": {
    "timestamp": 1715000000
  }
}
```