POST /v2/charter/accommodation/rooms rooms: getCharterAccommodationRooms این اندپوینت برای دریافت لیست اتاق‌های اقامتگاه (Accommodation Rooms) مرتبط با یک محاسبه calculation_id استفاده می‌شود. مقدار calculation_id ابتدا اصلاح شده و از جدول مرتبط واکشی می‌گردد. فقط زمانی پاسخ معتبر برگردانده می‌شود که چارتر از نوع accommodation باشد. URL: /v2/charter/accommodation/rooms Method: 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