#P1725
POST /v2/travel_requests/status/{id}
Change Request Status
این اندپوینت برای تغییر وضعیت یک درخواست سفر و همچنین تخصیص اپراتور مسئول استفاده میشود.
نکته مهم در این متد، منطق شرطی برای ثبت شماره فاکتور (`reference_id`) است که تنها در وضعیت خاصی (وضعیت ۴) اعمال میشود.
Update Status & Assign Operator
URL:
/v2/travel_requests/status/{id}Method: POST
Controller: TravelRequestsController@changeStatus
Body Parameters
| Parameter | Type | Description |
|---|---|---|
| status | integer | (الزامی) کد وضعیت جدید درخواست. |
| operator_id | integer | (اختیاری) شناسه اپراتور مسئول رسیدگی. اگر مقدار خالی یا `0` ارسال شود، در دیتابیس `NULL` ثبت میشود. |
| reference_id | integer | (شرطی) شناسه فاکتور صادر شده. این فیلد تنها زمانی در دیتابیس آپدیت میشود که status برابر با 4 باشد. |
Logic Details
- آمادهسازی دادهها:
- مقدار
operator_idبررسی میشود؛ در صورت وجود مقدار معتبر ثبت میشود، در غیر این صورت (استفاده از Elvis Operator `?:`) مقدار `NULL` لحاظ میشود. - مقدار
statusمستقیماً از ورودی خوانده میشود.
- مقدار
- شرط ثبت فاکتور (Reference Logic):
سیستم تنها در صورتی فیلدreference_idرا آپدیت میکند که دو شرط زیر همزمان برقرار باشند:- وضعیت جدید (`status`) برابر با 4 باشد.
- مقدار `reference_id` در ورودی ارسال شده و دارای مقدار باشد.
- بهروزرسانی دیتابیس: عملیات با استفاده از `Query Builder` روی جدول `travel_requests` انجام میشود.
Flowchart (Status Change Logic)
Start Request
↓
Set Operator
(Val or NULL)
(Val or NULL)
↓
Status == 4 ?
Yes
Has Ref ID?
Yes
Add reference_id
to update list
to update list
No
Ignore reference_id
↓
DB Update
Update travel_requests WHERE id = $id
Update travel_requests WHERE id = $id
↓
Return Success JSON
Response Example
{
"payload": {
"status": true
},
"meta": {
"timestamp": 1715000000
}
}