# RESOURCE /v2/accommodation/facilities

# Accommodation Facilities CRUD

این کنترلر وظیفه مدیریت **امکانات اقامتگاه‌ها (Facilities)** را بر عهده دارد.   
ویژگی بارز این پیاده‌سازی، استفاده مستقیم از **Query Builder** لاراول (`DB::table`) به جای Eloquent Models برای تمامی عملیات‌ها (خواندن، نوشتن، ویرایش و حذف) است که باعث افزایش پرفورمنس در کوئری‌های ساده می‌شود.

<div class="api-docs" id="bkmrk-">  ---

</div>## List All Facilities

<div class="api-docs" id="bkmrk-url%3A-%2Fv2%2Faccommodati"><div class="endpoint-info"><div>**URL:** `/v2/accommodation/facilities`</div><div>**Method:** <span class="method-get">GET</span></div><div>**Controller:** FacilityController@index</div></div></div>دریافت لیست کامل امکانات بدون هیچ‌گونه فیلترینگ یا صفحه‌بندی.

### Response Example

```json
{
  "status": true,
  "time": 1715000000,
  "data": [
    {
      "id": 1,
      "category_id": 5,
      "title_en": "Free WiFi",
      "title_fa": "اینترنت رایگان",
      "icon": "wifi-icon.svg",
      "description": "High speed internet",
      "branch": 1,
      "status": 1
    }
  ]
}
```

<div class="api-docs" id="bkmrk--1">  ---

</div>## Create Facility

<div class="api-docs" id="bkmrk-url%3A-%2Fv2%2Faccommodati-1"><div class="endpoint-info"><div>**URL:** `/v2/accommodation/facilities`</div><div>**Method:** <span class="method-post">POST</span></div><div>**Controller:** FacilityController@store</div></div></div>### Body Parameters

<div class="api-docs" id="bkmrk-parameter-type-descr"><table class="schema-table" dir="rtl"><thead><tr><th>Parameter</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>category\_id</td><td>integer</td><td>شناسه دسته‌بندی امکانات.</td></tr><tr><td>branch</td><td>integer</td><td>شناسه شعبه.</td></tr><tr><td>title\_en</td><td>string</td><td>عنوان انگلیسی.</td></tr><tr><td>title\_fa</td><td>string</td><td>عنوان فارسی.</td></tr><tr><td>icon</td><td>string</td><td>آدرس یا نام فایل آیکون.</td></tr><tr><td>description</td><td>string</td><td>توضیحات تکمیلی.</td></tr><tr><td>status</td><td>integer</td><td>وضعیت فعال/غیرفعال (معمولاً 1 یا 0).</td></tr></tbody></table>

</div>### Implementation Note

سیستم از `DB::table('facilities')->insertGetId()` برای درج رکورد و دریافت همزمان ID استفاده می‌کند. سپس بلافاصله یک کوئری `SELECT` اجرا می‌شود تا آبجکت کامل ساخته شده را در پاسخ بازگرداند.

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

</div>## Show Facility Details

<div class="api-docs" id="bkmrk-url%3A-%2Fv2%2Faccommodati-2"><div class="endpoint-info"><div>**URL:** `/v2/accommodation/facilities/{id}`</div><div>**Method:** <span class="method-get">GET</span></div><div>**Controller:** FacilityController@show</div></div></div>نمایش جزئیات یک رکورد خاص بر اساس ID.

<div class="api-docs" id="bkmrk--3">  ---

</div>## Update Facility

<div class="api-docs" id="bkmrk-url%3A-%2Fv2%2Faccommodati-3"><div class="endpoint-info"><div>**URL:** `/v2/accommodation/facilities/{id}`</div><div>**Method:** <span class="method-put">PUT/PATCH</span></div><div>**Controller:** FacilityController@update</div></div></div>### Body Parameters

<div class="api-docs" id="bkmrk-parameter-type-descr-1"><table class="schema-table" dir="rtl"><thead><tr><th>Parameter</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>title\_en</td><td>string</td><td>عنوان انگلیسی.</td></tr><tr><td>title\_fa</td><td>string</td><td>عنوان فارسی.</td></tr><tr><td>icon</td><td>string</td><td>آدرس یا نام فایل آیکون.</td></tr><tr><td>description</td><td>string</td><td>توضیحات.</td></tr><tr><td>status</td><td>integer</td><td>وضعیت.</td></tr></tbody></table>

<div class="api-notice" dir="rtl">**نکته مهم:** در متد آپدیت، فیلدهای `category_id` و `branch` در آرایه به‌روزرسانی وجود ندارند. این بدان معناست که پس از ایجاد، امکان تغییر دسته‌بندی یا شعبه یک Facility از طریق این اندپوینت وجود ندارد (Immutable Fields).</div>  ---

</div>## Delete Facility

<div class="api-docs" id="bkmrk-url%3A-%2Fv2%2Faccommodati-4"><div class="endpoint-info"><div>**URL:** `/v2/accommodation/facilities/{id}`</div><div>**Method:** <span class="method-delete">DELETE</span></div><div>**Controller:** FacilityController@destroy</div></div></div>حذف فیزیکی رکورد از دیتابیس (Hard Delete) با استفاده از دستور `delete()` کوئری بیلدر.