#P1726
RESOURCE /v2/accommodation/facilities
Accommodation Facilities CRUD
این کنترلر وظیفه مدیریت امکانات اقامتگاهها (Facilities) را بر عهده دارد.
ویژگی بارز این پیادهسازی، استفاده مستقیم از Query Builder لاراول (`DB::table`) به جای Eloquent Models برای تمامی عملیاتها (خواندن، نوشتن، ویرایش و حذف) است که باعث افزایش پرفورمنس در کوئریهای ساده میشود.
List All Facilities
URL:
/v2/accommodation/facilitiesMethod: 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/facilitiesMethod: 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() کوئری بیلدر.