Skip to main content
#P1666

PATCH /v2/charter (updateCharter)

Charter: Update Charter (Status / Sell)

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

Request Overview

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

Access Control

  • دسترسی معتبر JWT
  • ارسال پارامتر action الزامی است.

Request Parameters

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

Logic: Action "status"

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

  • بررسی وضعیت پایان یافته: اگر وضعیت فعلی چارتر 3 باشد، امکان ویرایش وجود ندارد (Error: چارتر مورد نظر در وضعیت پایان یافته می باشد).
  • بررسی حذف (Status 4):
    • فراخوانی متد capacityItemCharter.
    • اگر capacity.total با capacity.capacity برابر نباشد (یعنی رزرو قطعی، موقت یا گارانتی وجود دارد):
    • جلوگیری از حذف → Error Code 1000.
  • در غیر این صورت وضعیت آپدیت می‌شود.
data.field Type Description
status integer وضعیت جدید (مثلاً 4 برای حذف)

Logic: Action "sell"

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

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

Response (Success)

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

HTTP/1.1 204 No Content
  

Response (Error)

// Error: Deletion failed due to existing reservations
{
  "error": {
    "code": 1000,
    "message": "بر روی این چارتر رزرو انجام شده است و امکان حذف وجود ندارد."
  }
}

// Error: Charter 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