#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"
}
`