Skip to main content
#P1666

PATCH /v2/charter (updateCharter)

Charter: Update Charter (Status / Sell)

این اندپوینت برای تغییر وضعیت چارتر یا مدیریت وضعیت فروش (همکاران / HUB) طراحی شده است. متد فقط دو رفتار اصلی دارد: status و sell. کنترل حذف با ظرفیت کامل و وضعیت پایان‌یافته نیز در همین متد انجام می‌شود.

Request Overview

URL: /v2/charter
Method: PATCH
Controller: CharterController@updateCharter
Middleware: authWithJwt

Supported Actions

  • status → تغییر وضعیت چارتر
  • sell → فعال/غیرفعال کردن فروش همکاری یا HUB

Payload Schema

Field Type Required Description
id integer Yes شناسه چارتر
action string Yes status یا sell
data object Yes پارامترهای مرتبط با اکشن

Action: status

وظیفه: فعال/غیرفعال‌سازی یا حذف چارتر. حذف (status = 4) تنها زمانی مجاز است که هیچ رزروی (قطعی/موقت/warranty) وجود نداشته باشد.

data.field Type Description
status integer مقدار وضعیت جدید
# Rule 1 — Deleting a charter
if (new_status == 4 && (capacity.total != capacity.capacity)):
    error: cannot delete, charter has reservations

# Rule 2 — Charter already ended
if charter.status == 3:
    error: charter is finished
  

Action: sell

فعال یا غیرفعال کردن فروش برای همکاران یا HUB.

data.field Type Description
colleague boolean فعال/غیرفعال‌سازی فروش همکاران
hub boolean فعال/غیرفعال‌سازی فروش HUB
# Example:
if data.colleague exists:
    update colleague_sell = 1 or null

if data.hub exists:
    update hub_sell = 1 or null
  

Capacity Calculation (capacityItemCharter)

در اکشن حذف، سیستم باید بررسی کند آیا مجموع رزروهای: قطعی + موقت + warranty صفر هستند یا خیر.

can_delete = (capacity.total == capacity.capacity)
  

Execution Flowchart

Start (PATCH /v2/charter)
Load Charter by ID
If Not Found → Error 404
Switch(action)
Action = status
If status=4 → Check capacityItemCharter()
If has reservations → Error 422
If charter.status=3 → Error 404
Update status
Action = sell
If colleague/hub in data → Update fields
Redis::del(charter:*:title)
Return 204 No Content

Response Samples

# 204 success
(no body)

# 404 charter not found
{
  "error": { "code": 1000, "message": "چارتر مورد نظر یافت نشد." }
}

# cannot delete (status=4)
{
  "error": { "code": 1000, "message": "بر روی این چارتر رزرو انجام شده است و امکان حذف وجود ندارد." }
}

# charter ended
{
  "error": { "code": 1000, "message": "چارتر مورد نظر در وضعیت پایان یافته می باشد." }
}