Skip to main content
#P1665

PUT /v2/charter

Charter: Update Inventory (Operation)

این اندپوینت مسئول مدیریت تغییرات یک چارتر ثبت‌شده است. این متد یک Action Dispatcher داخلی دارد که بر اساس مقدار action درخواست را به یکی از سه رفتار مستقل هدایت می‌کند: base، calculations و copy. این عملیات‌ها اتمیک و تحت تراکنش انجام می‌شوند و سیستم از Capacity Protection برای جلوگیری از تناقض ظرفیت و فروش استفاده می‌کند.

Request Overview

URL: /v2/charter
Method: PUT
Controller: CharterController@operationCharter
Middleware: authWithJwt

Key Features & Behavior

  • Action-Based Logic: سه مسیر عملیاتی مستقل (Base, Calculations, Copy).
  • Capacity Protection: ظرفیت جدید نمی‌تواند کمتر از تعداد رزروهای قطعی/موقت باشد.
  • Transactional: هر عملیات کامل در یک تراکنش انجام می‌شود.
  • Deep Cloning: در حالت Copy تمام جداول وابسته با Serial جدید تکثیر می‌شوند.
  • Financial Sync: مالیات، کمیسیون، قوانین استرداد و اتاق‌ها برای هر کلاس نرخی مدیریت می‌شود.

Payload Schema (Root Level)

Field Type Required Description
action string Yes مقدار ثابت: base یا calculations یا copy
id int Cond. شناسه چارتر (برای base و copy الزامی است)
main_id int Cond. شناسه چارتر (در حالت calculations الزامی است)
items array Cond. برای calculations مورد نیاز است

Logic 1: Base Operation

این حالت برای ویرایش اطلاعات عمومی چارتر استفاده می‌شود.

Field Type Description
status bool فعال/غیرفعال
capacity int ظرفیت کلی (چک ظرفیت اعمال می‌شود)
commission float کمیسیون پایه
get_passenger bool نیاز به اطلاعات مسافر
notification object { mobile, text, date, time }
// Capacity Guard Example
$cap = CharterHelper::capacityItemCharter($id);
if ($new_capacity < $cap['reserved_total']) {
    throw new Exception("New capacity cannot be lower than sold seats.");
}
  

Logic 2: Calculations Operation

مدیریت کلاس‌های نرخی، قیمت‌ها، ظرفیت اتاق‌ها، مالیات‌ها و قوانین کنسلی.

  • create: ایجاد کلاس جدید
  • update: ویرایش قیمت/ظرفیت (با چک فروش)
  • delete: حذف کلاس (تنها اگر فروش نداشته باشد)
{
  "action": "calculations",
  "main_id": 150,
  "items": [
    {
      "mode": "update",
      "id": 455,
      "price": 3200000,
      "capacity": 12,
      "taxes": [{ "amount": 10000, "description": "Tax" }],
      "rules": [{ "percent": 30, "from_time": 0, "to_time": 12 }]
    }
  ]
}
  

Logic 3: Copy Operation

عملیات کپی یک چارتر شامل:

  • تولید Serial جدید
  • کپی جدول اصلی Charter
  • کپی Charter Items
  • کپی Calculations + Taxes + Rules
  • کپی Mapping ها و وابستگی‌ها
{
  "action": "copy",
  "id": 150
}
  

Execution Flowchart

Start (PUT)
Validate Action
Switch(action)
Execute Base | Calc | Copy
Commit Transaction
Return Response

Response Example

// Success
{
  "status": true,
  "data": { "id": 150, "status": true }
}

// Error
{
  "status": false,
  "message": "Capacity cannot be less than sold seats"
}
  

`