Skip to main content
#P1666

PATCH /v2/charter (updateCharter)

Charter: Update Charter (Status / Sell)

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

Request Overview

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

SupportedAccess ActionsControl

  • statusدسترسی معتبر تغییر وضعیت چارترJWT
  • ارسال پارامتر sellaction الزامی فعال/غیرفعال کردن فروش همکاری یا HUBاست.

PayloadRequest SchemaParameters

Field Type Required Description
id integer Yesyes شناسه رکورد چارتر
action string Yesyes مقادیر مجاز: status یا sell
data object Yesyes پارامترهایحاوی فیلدهای مرتبط با اکشن انتخابی

Action:Logic: statusAction "status"

وظیفه:برای تغییر وضعیت چارتر (فعال/غیرفعال‌سازیغیرفعال/حذف) یااستفاده حذفمی‌شود.

چارتر.
  • بررسی وضعیت پایان یافته: اگر وضعیت فعلی چارتر 3 باشد، امکان ویرایش وجود ندارد (Error: چارتر مورد نظر در وضعیت پایان یافته می باشد).
  • بررسی حذف (status =Status 4): تنها
      زمانی
    • فراخوانی مجازمتد استcapacityItemCharter.
    • که
    • اگر هیچcapacity.total رزرویبا capacity.capacity برابر نباشد (قطعی/موقت/warranty)یعنی رزرو قطعی، موقت یا گارانتی وجود نداشتهدارد):
    • باشد.

    • جلوگیری
      از حذف → Error Code 1000.
  • در غیر این صورت وضعیت آپدیت می‌شود.
data.field Type Description
status integer مقدار وضعیت جدید (مثلاً 4 برای حذف)
# 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:Logic: sellAction "sell"

فعالبرای یاکنترل غیرفعال کردنسوئیچ‌های فروش برایاستفاده همکاران یا HUB.می‌شود.

  • اگر data.colleague ارسال شود → فیلد colleague_sell آپدیت می‌شود.
  • اگر data.hub ارسال شود → فیلد hub_sell آپدیت می‌شود.
  • پس از موفقیت، کش مربوط به عنوان چارتر در Redis پاک می‌شود.
data.field Type Description
colleague boolean فعال/غیرفعال‌سازی فروش همکارانهمکار
hub boolean فعال/غیرفعال‌سازی فروش HUB

Response (Success)

در صورت موفقیت، هیچ محتوایی برگردانده نمی‌شود (HTTP 204).

# Example:
if data.colleague exists:
    update colleague_sell = HTTP/1.1 or204 nullNo if data.hub exists:
    update hub_sell = 1 or nullContent
  

Capacity CalculationResponse (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 SamplesError)

#// 204Error: successDeletion (nofailed body)due #to 404existing charter not found
{
  "error": { "code": 1000, "message": "چارتر مورد نظر یافت نشد." }
}

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

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

Flowchart

Start (PATCH /v2/charter)
Find Charter by ID
Check Action Type
Action: Status
Is Status = 4 (Delete)?
Check Capacity (Reservations)
If Has Reserve → Error
Update Status
Action: Sell
Update colleague_sell / hub_sell
Clear Redis Cache
Return 204 No Content