#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": "چارتر مورد نظر در وضعیت پایان یافته می باشد." }
}