#P1102
Function listPlanCharter
· هدف:
این متد برای واکشی و نمایش لیست پلنهای اتاقبندی (plan) مرتبط با یک چارتر اقامتی طراحی شده است. هدف اصلی آن، ارائه یک نمای کلی از تخصیص اتاقها به مسافران بر اساس یک پلن از پیش تعریفشده است. متد ابتدا چارتر را بر اساس شناسه پیدا کرده و بررسی میکند که آیا چارتری از نوع اقامتی و دارای پلن است یا خیر. سپس، با استفاده از ReservationController::getPlanDetails, جزئیات کامل پلن (شامل لیست اتاقها و مسافران تخصیصیافته به هر کدام) را واکشی میکند. در نهایت، با فراخوانی ReservationController::getPlanPassengers, لیست تمام مسافران مرتبط با آن پلن را نیز استخراج کرده و هر دو لیست (جزئیات پلن و لیست مسافران) را در خروجی بازمیگرداند.
| ویژگیها | توضیحات |
| هدف کلی | نمایش جزئیات پلن اتاقبندی و لیست مسافران مرتبط با آن. |
| اعتبارسنجی | بررسی اینکه چارتر از نوع اقامتی بوده و دارای plan_id است. |
| استفاده از کنترلر دیگر | فراخوانی متدهای getPlanDetails و getPlanPassengers از ReservationController برای واکشی دادهها. |
| خروجی دو بخشی | بازگرداندن هم جزئیات تخصیص اتاقها (details) و هم لیست کلی مسافران (passengers). |
| خطایابی | بازگرداندن خطای 404 در صورت عدم وجود چارتر یا پلن. |
· ورودیها (پارامترها):
| توضیحات | موقعیت | نوع داده | نام پارمتر |
| شناسه چارتر اقامتی که پلن آن مورد نظر است. | Route |
integer |
$id |
· خروجی (Return):
| توضیحات | نوع داده |
یک آبجکت JSON با کلید payload که خود شامل دو کلید details (آرایهای از اتاقها و مسافرانشان) و passengers (لیست کلی مسافran) است. |
Illuminate\Http\JsonResponse |
در صورت یافت نشدن چارتر یا پلن، یک پاسخ با کد 404 Not Found و پیام خطا. |
Illuminate\Http\JsonResponse |
· مثال استفاده / سناریو:
سناریو: مشاهده پلن اتاقبندی چارتر هتل با شناسه ۶۲۰
- Request URL:
/api/panel/v2/charter/620/plan/list - Action:
- متد چارتر ۶۲۰ را از دیتابیس میخواند. فرضاً
type='accommodation'وplan=5است. ReservationController::getPlanDetails(5, 620)فراخوانی میشود تا جزئیات تخصیص اتاقها را برگرداند.ReservationController::getPlanPassengers(5)فراخوانی میشود تا لیست تمام مسافران آن پلن را برگرداند.- نتایج در یک آبجکت
payloadترکیب میشوند.
- Response:
HTTP Status:200 OKBody:
json
{
"payload": {
"details": [ { "room_number": "101", "passengers": [ {...} ] }, ... ],
"passengers": [ {...passenger_1...}, {...passenger_2...} ]
},
"meta": { "timestamp": ... }
}