Skip to main content
#P1690

POST /v2/charter/accommodation/rooms

Charter:rooms: List Branch PledgersgetCharterAccommodationRooms

این اندپوینت برای دریافت لیست اتاق‌های اقامتگاه (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