#P1690
POST /v2/charter/accommodation/rooms
rooms: getCharterAccommodationRooms
این اندپوینت برای دریافت لیست اتاقهای اقامتگاه (Accommodation Rooms) مرتبط با یک محاسبه calculation_id استفاده میشود. مقدار calculation_id ابتدا اصلاح شده و از جدول مرتبط واکشی میگردد. فقط زمانی پاسخ معتبر برگردانده میشود که چارتر از نوع accommodation باشد.
URL:
/v2/charter/accommodation/roomsMethod: POST
Controller: CharterController@getCharterAccommodationRooms
Middleware: authWithJwt
Auth: JWT Required
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| calculation_id | integer | yes | شناسه محاسبه (calculation) که باید حداقل بزرگتر از 10000 باشد. مقدار واقعی با کم کردن 10000 استخراج میشود. |
Controller Logic
static function getCharterAccommodationRooms(Request $request)
{
try {
if (isset($request->calculation_id) && $request->calculation_id) {
$calculationId = $request->calculation_id - 10000;
$calculation = DB::table('charter_calculations_accommodation')
->select('main_id')
->find($calculationId);
if ($calculation) {
$charter = DB::table('charters')
->select('type')
->find($calculation->main_id);
if ($charter && $charter->type == 'accommodation') {
$accommodationRooms = DB::table('charter_accommodation_rooms')
->where('calc_id', $calculationId)
->get();
return response()->json([
'items' => $accommodationRooms,
'meta' => ['timestamp' => time()]
]);
} else {
return response()->json([
'error' => ['message' => 'charter not found.'],
'meta' => ['timestamp' => time()]
], 400);
}
} else {
return response()->json([
'error' => ['message' => 'calculation not found.'],
'meta' => ['timestamp' => time()]
], 400);
}
} else {
return response()->json([
'error' => ['message' => 'The calculation_id field is required.'],
'meta' => ['timestamp' => time()]
], 400);
}
} catch (Exception $exception) {
return response()->json([
'error' => [
'code' => $exception->getCode(),
'message' => $exception->getMessage(),
'trace' => $exception->getTrace()
]
], 400);
}
}
Possible Errors
| Error | HTTP Code | Description |
|---|---|---|
| The calculation_id field is required. | 400 | اگر calculation_id ارسال نشده باشد |
| calculation not found. | 400 | شناسه محاسبه معتبر نیست یا یافت نشد |
| charter not found. | 400 | محاسبه یافت شد اما چارتر وابسته از نوع accommodation نیست |
| Exception | 400 | بروز خطای داخلی همراه با message، code و trace |
Success Response
Status: 200 OK
{
"items": [
{
"id": 12,
"calc_id": 1033,
"room_title": "...",
"capacity": 3,
"price": 1250000,
...
},
...
],
"meta": {
"timestamp": 1730000000
}
}
Error Response
Status: 400 Bad Request
{
"error": {
"message": "calculation not found."
},
"meta": {
"timestamp": 1730000000
}
}
Flowchart
Validate JWT
↓
Check calculation_id exists?
↓
calculation_id - 10000
↓
Find calculation in charter_calculations_accommodation
↓
Find charter(type)
↓
type == accommodation?
↓
Yes → fetch rooms from charter_accommodation_rooms
↓
Return items + timestamp