#P1078
Function operationCharter
· هدف:
این تابع به عنوان یک مرکز عملیاتی چندمنظوره برای مدیریت و بهروزرسانی چارترهای موجود طراحی شده است. برخلاف storeCharter که وظیفه ایجاد را بر عهده دارد، operationCharter مسئول رسیدگی به اقدامات (actions) مختلفی است که میتوان روی یک چارتر از قبل ایجاد شده انجام داد. این متد با دریافت یک پارامتر action در درخواست، منطق خود را تغییر میدهد تا عملیاتهای متفاوتی را اجرا کند. در حال حاضر، این تابع دو اقدام اصلی را پشتیبانی میکند: base برای بهروزرسانی اطلاعات پایهای و کلی چارتر (مانند ظرفیت کل، توضیحات، دورههای زمانی و مجوزهای فروش) و calculations برای مدیریت پیچیدهی کلاسهای قیمتی و ظرفیتی چارتر. این مدیریت شامل بهروزرسانی کلاسهای موجود، حذف کلاسهایی که فروش قطعی ندارند، و افزودن کلاسهای جدید است. این تابع با بررسیهای دقیق امنیتی، مانند جلوگیری از کاهش ظرفیت به میزانی کمتر از فروش قطعی، یکپارچگی دادهها را در حین عملیات ویرایش تضمین میکند و از بروز ناسازگاری در سیستم جلوگیری مینماید.
| ویژگیها | توضیحات |
| هدف کلی | |
استفاده از پارامتر برای |
|
کوئریبیلدر لاراول (DB::table), استفاده از توابع کمکی (ReservationController::capacityItemCharter), مدیریت کردن |
|
|
|
| |
· ورودیها (پارامترها):
| توضیحات | نوع داده | نام پارمتر |
| آبجکت اصلی درخواست که حاوی تمام دادههای |
Illuminate\Http\Request |
$request |
' یا '. |
string |
$request-> |
| شناسه اصلی چارتری که عملیات روی آن انجام میشود. | number |
$request->main_id |
() |
|
$request-> |
action: | | |
array |
$request->calculations |
|
(action: 'calculations') آبجکتی شامل آرایهای از شناسههایی که شوند (مانند , taxes, financial) |
object |
$request-> |
| | |
سایر فیلدها مانند capacity, description, permissions و غیره. |
... |
... |
· خروجی (Return):
| توضیحات | نوع داده |
یک پاسخ و پیام |
Illuminate\Http\JsonResponse |
· مثال استفاده:
// سناریو:سناریو ایجاد۱: بهروزرسانی توضیحات و ظرفیت کلی یک چارتر پرواز هفتگی برای روزهای شنبه و دوشنبه
// POST /api/panel/v2/charter/storeoperation
// Body (JSON):
{
"action": "base",
"main_id": 45,
"description": "توضیحات جدید برای این چارتر",
"capacity": 150
}
// خروجی مورد انتظار: یک پاسخ موفقیتآمیز با کد 200 و پیام تایید.
// ----------------------------------------------------------------
// سناریو ۲: حذف یک کلاس قیمتی و بهروزرسانی یک کلاس دیگر
// POST /api/panel/v2/charter/operation
// Body (JSON):
{
"action": "calculations",
"main_id": 45,
"type": "route",
"subtype": "aircraft",
"capacity": 180,
"description": "چارتر هفتگی تهران-مشهد",
"permissions": { /* ... */ },
"repeat"deleted": {
"type": "weekly",
"from": "1404/08/01",
"to": "1404/08/30",
"days"calculations": [6, 1]101] // شنبهدرخواست وحذف دوشنبهکلاس با شناسه 101
},
"items": [
{
"details": {
"origin": { "id": 1, "name": "THR" },
"destination": { "id": 2, "name": "MHD" },
"datetime": "1404/08/04 10:30", // تاریخ یکی از روزهای الگو (یکشنبه)
"vehicle": { /* ... */ }
}
}
],
"calculations": [
{
"name"id": "اکونومی",102, "capacity":// 150,بهروزرسانی کلاس با شناسه 102
"financial": { "base": { "adult_price": 2500000 } }
/*/ ... */سایر }
},
{
"name": "بیزنس",
"capacity": 30,
"financial": { /* ... */ }جزئیات
}
]
}
// خروجی مورد انتظاراحتمالی (در صورت موفقیت)داشتن فروش در کلاس 101):
// HTTP Status 409 Conflict
{
"error": {
"main"code": 1000,
"message": "کلاس [101,نام 102,کلاس] 103,دارای ...],فروش //قطعی شناسههای(5) چارترهایمی اصلیباشد. ایجادلطفا شدهقبل برایاز انجام هر تاریخعملیاتی "calculations":فروش [201, 202, 203, ...], // شناسههای کلاسهای قیمتی
"taxes": [301, 302, ...], // شناسههای مالیاتها را به کلاس دیگری انتقال دهید."financial": [401, 402, ...] // شناسههای اطلاعات مالی
}
}