# POST /v2/charter/accommodation/rooms

# rooms: getCharterAccommodationRooms

این اندپوینت برای دریافت لیست اتاق‌های اقامتگاه (Accommodation Rooms) مرتبط با یک محاسبه `calculation_id` استفاده می‌شود. مقدار `calculation_id` ابتدا اصلاح شده و از جدول مرتبط واکشی می‌گردد. فقط زمانی پاسخ معتبر برگردانده می‌شود که چارتر از نوع **accommodation** باشد.

<div class="api-docs" id="bkmrk-url%3A-%2Fv2%2Fcharter%2Facc"><div class="endpoint-info"><div>**URL:** `/v2/charter/accommodation/rooms`</div><div>**Method:** <span class="method-post">POST</span></div><div>**Controller:** CharterController@getCharterAccommodationRooms</div><div>**Middleware:** authWithJwt</div><div>**Auth:** JWT Required</div></div></div>## Request Body

<div class="api-docs" id="bkmrk-field-type-required-"><div class="table-wrapper"><table><thead><tr><th>Field</th><th>Type</th><th>Required</th><th>Description</th></tr></thead><tbody><tr><td>calculation\_id</td><td>integer</td><td>yes</td><td>شناسه محاسبه (calculation) که باید حداقل بزرگ‌تر از 10000 باشد. مقدار واقعی با کم کردن 10000 استخراج می‌شود.</td></tr></tbody></table>

</div></div>## 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);
    }
}
  
```

<div class="api-docs" id="bkmrk-"></div>## Possible Errors

<div class="api-docs" id="bkmrk-error-http-code-desc"><div class="table-wrapper"><table><thead><tr><th>Error</th><th>HTTP Code</th><th>Description</th></tr></thead><tbody><tr><td>The calculation\_id field is required.</td><td>400</td><td>اگر calculation\_id ارسال نشده باشد</td></tr><tr><td>calculation not found.</td><td>400</td><td>شناسه محاسبه معتبر نیست یا یافت نشد</td></tr><tr><td>charter not found.</td><td>400</td><td>محاسبه یافت شد اما چارتر وابسته از نوع accommodation نیست</td></tr><tr><td>Exception</td><td>400</td><td>بروز خطای داخلی همراه با message، code و trace</td></tr></tbody></table>

</div></div>## Success Response

```
Status: 200 OK

{
  "items": [
    {
      "id": 12,
      "calc_id": 1033,
      "room_title": "...",
      "capacity": 3,
      "price": 1250000,
      ...
    },
    ...
  ],
  "meta": {
    "timestamp": 1730000000
  }
}
  
```

<div class="api-docs" id="bkmrk--1"></div>## Error Response

```
Status: 400 Bad Request

{
  "error": {
    "message": "calculation not found."
  },
  "meta": {
    "timestamp": 1730000000
  }
}
  
```

<div class="api-docs" id="bkmrk--2"></div>## Flowchart

<div class="api-docs" id="bkmrk-validate-jwt-%E2%86%93-check"><div class="flowchart"><div class="flow-item">Validate JWT</div><div class="flow-arrow">↓</div><div class="flow-item">Check calculation_id exists?</div><div class="flow-arrow">↓</div><div class="flow-item">calculation_id - 10000</div><div class="flow-arrow">↓</div><div class="flow-item">Find calculation in charter_calculations_accommodation</div><div class="flow-arrow">↓</div><div class="flow-item">Find charter(type)</div><div class="flow-arrow">↓</div><div class="flow-item">type == accommodation?</div><div class="flow-arrow">↓</div><div class="flow-item">Yes → fetch rooms from charter_accommodation_rooms</div><div class="flow-arrow">↓</div><div class="flow-item">Return items + timestamp</div></div></div>