Skip to main content
#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

  1. آماده‌سازی داده‌ها:
    • مقدار operator_id بررسی می‌شود؛ در صورت وجود مقدار معتبر ثبت می‌شود، در غیر این صورت (استفاده از Elvis Operator `?:`) مقدار `NULL` لحاظ می‌شود.
    • مقدار status مستقیماً از ورودی خوانده می‌شود.
  2. شرط ثبت فاکتور (Reference Logic):
    سیستم تنها در صورتی فیلد reference_id را آپدیت می‌کند که دو شرط زیر همزمان برقرار باشند:
    • وضعیت جدید (`status`) برابر با 4 باشد.
    • مقدار `reference_id` در ورودی ارسال شده و دارای مقدار باشد.
    در غیر این صورت، حتی اگر `reference_id` ارسال شود، نادیده گرفته می‌شود.
  3. به‌روزرسانی دیتابیس: عملیات با استفاده از `Query Builder` روی جدول `travel_requests` انجام می‌شود.

Flowchart (Status Change Logic)

Start Request
Set Operator
(Val or NULL)
Status == 4 ?
Yes
Has Ref ID?
Yes
Add reference_id
to update list
No
Ignore reference_id
DB Update
Update travel_requests WHERE id = $id
Return Success JSON

Response Example

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