Skip to main content
#P1726

RESOURCE /v2/accommodation/facilities

Accommodation Facilities CRUD

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


List All Facilities

URL: /v2/accommodation/facilities
Method: GET
Controller: FacilityController@index

دریافت لیست کامل امکانات بدون هیچ‌گونه فیلترینگ یا صفحه‌بندی.

Response Example

{
  "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
    }
  ]
}

Create Facility

URL: /v2/accommodation/facilities
Method: POST
Controller: FacilityController@store

Body Parameters

Parameter Type Description
category_id integer شناسه دسته‌بندی امکانات.
branch integer شناسه شعبه.
title_en string عنوان انگلیسی.
title_fa string عنوان فارسی.
icon string آدرس یا نام فایل آیکون.
description string توضیحات تکمیلی.
status integer وضعیت فعال/غیرفعال (معمولاً 1 یا 0).

Implementation Note

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


Show Facility Details

URL: /v2/accommodation/facilities/{id}
Method: GET
Controller: FacilityController@show

نمایش جزئیات یک رکورد خاص بر اساس ID.


Update Facility

URL: /v2/accommodation/facilities/{id}
Method: PUT/PATCH
Controller: FacilityController@update

Body Parameters

Parameter Type Description
title_en string عنوان انگلیسی.
title_fa string عنوان فارسی.
icon string آدرس یا نام فایل آیکون.
description string توضیحات.
status integer وضعیت.
نکته مهم: در متد آپدیت، فیلدهای category_id و branch در آرایه به‌روزرسانی وجود ندارند. این بدان معناست که پس از ایجاد، امکان تغییر دسته‌بندی یا شعبه یک Facility از طریق این اندپوینت وجود ندارد (Immutable Fields).

Delete Facility

URL: /v2/accommodation/facilities/{id}
Method: DELETE
Controller: FacilityController@destroy

حذف فیزیکی رکورد از دیتابیس (Hard Delete) با استفاده از دستور delete() کوئری بیلدر.