#P1086
Function transferCharterReservation
· هدف:
این متد برای انتقال یک یا چند رزرو از یک آیتم چارتر (مثلاً یک کلاس پروازی) به آیتم چارتری دیگر (مثلاً کلاس پروازی متفاوت در همان پرواز یا پروازی دیگر) طراحی شده است. منطق اصلی آن بر پایه اعتبارسنجی ظرفیت مقصد استوار است. قبل از هر اقدامی، متد با فراخوانی ReservationController::capacityItemCharter، ظرفیت خالی آیتم مقصد (goal) را بررسی میکند. اگر ظرفیت مقصد برای پذیرش تعداد رزروهای در حال انتقال کافی باشد، متد در یک حلقه، شناسههای main_id و item_id هر رزرو را به شناسههای آیتم مقصد بهروزرسانی میکند. این عملیات به صورت اتمیک برای هر رزرو انجام میشود. در صورتی که ظرفیت مقصد کافی نباشد، عملیات متوقف شده و یک خطای 422 بازگردانده میشود تا از ایجاد وضعیت ناهماهنگ در دادهها جلوگیری شود.
| ویژگیها | توضیحات |
| هدف کلی | انتقال رزرو(ها) از یک آیتم چارتر به آیتم دیگر. |
| اعتبارسنجی ظرفیت | بررسی دقیق ظرفیت آیتم مقصد قبل از شروع عملیات انتقال. |
| انتقال گروهی | قابلیت انتقال چندین رزرو در یک درخواست واحد. |
| عملیات اصلی | بهروزرسانی فیلدهای main_id و item_id در رکوردهای جدول رزرو. |
| ایمنی | جلوگیری از انتقال در صورت عدم وجود ظرفیت کافی در مقصد. |
| خطایابی | بازگرداندن پاسخ 422 Unprocessable Entity با پیام واضح در صورت کمبود ظرفیت. |
| پاسخ موفقیت | بازگرداندن پاسخ 204 No Content در صورت انتقال موفقیتآمیز. |
· ورودیها (پارامترها):
| توضیحات | نوع داده | نام پارمتر | |
| آرایهای از شناسههای رزروهایی که باید منتقل شوند. | Body |
array |
$request->items |
| آبجکتی که آیتم مقصد را مشخص میکند. | Body |
array |
$request->goal |
· خروجی (Return):
| توضیحات | نوع داده |
در صورت موفقیت، یک پاسخ خالی با کد 204 No Content. |
Illuminate\Http\JsonResponse |
در صورت کمبود ظرفیت در مقصد، یک پاسخ با کد 422 Unprocessable Entity و پیام خطا. |
Illuminate\Http\JsonResponse |
در صورت بروز خطای عمومی، یک پاسخ با کد 400 Bad Request و جزئیات استثناء. |
Illuminate\Http\JsonResponse |
· مثال استفاده / سناریو:
سناریو: انتقال دو مسافر از کلاس اکونومی به بیزنس در یک پرواز
- Request Body:
{
"items": [5432, 5433],
"goal": {
"main_id": 450,
"item_id": 981
}
}
- Action:
- متد ظرفیت آیتم
981(کلاس بیزنس) از چارتر450را بررسی میکند. - فرض: ظرفیت خالی بیشتر از ۲ نفر است.
- متد یک حلقه روی
itemsاجرا میکند. - برای رزرو
5432:UPDATE charter_route_reservation SET main_id=450, item_id=981 WHERE id=5432. - برای رزرو
5433:UPDATE charter_route_reservation SET main_id=450, item_id=981 WHERE id=5433.
- Response:
HTTP Status:204 No Content