# GET /b2c/v1/base/accommodations/list

<div class="api-docs" id="bkmrk-">  <div class="endpoint-section">  
</div></div>## Search Accommodations &amp; Cities

این اندپوینت برای "Autocomplete" یا جستجوی اولیه در بخش هتل استفاده می‌شود.   
ورودی کاربر را گرفته و به صورت همزمان در لیست **شهرها** و **اقامتگاه‌ها** (هتل، آپارتمان و...) جستجو می‌کند.

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

  </div># Get Accommodation List

<div class="api-docs" id="bkmrk-url%3A-%2Fb2c%2Fv1%2Fbase%2Fac"><div class="endpoint-info"><div>**URL:** `/b2c/v1/base/accommodations/list`</div><div>**Method:** <span class="method-get">GET</span></div><div>**Controller:** V1BaseController@accommodationList</div><div>**Auth:** Optional (Public)</div></div></div>### Query Parameters (پارامترهای ورودی)

<div class="api-docs" id="bkmrk-parameter-type-requi"><table class="schema-table" dir="rtl"><thead><tr><th>Parameter</th><th>Type</th><th>Required</th><th>Description</th></tr></thead><tbody><tr><td dir="ltr">search</td><td>String</td><td>No</td><td>عبارت مورد نظر برای جستجو.   
<span style="font-size: 0.9em; color: gray;">در نام شهر، نام هتل، آدرس، نام استان و نام کشور (فارسی و انگلیسی) جستجو می‌شود.</span></td></tr></tbody></table>

  </div>### Business Logic (منطق تجاری)

<div class="api-docs" id="bkmrk-%D8%AC%D8%B3%D8%AA%D8%AC%D9%88%DB%8C-%D8%B4%D9%87%D8%B1%D9%87%D8%A7-%28cities"><div class="logic-box" dir="rtl">1. **جستجوی شهرها (Cities Search):**
    - جدول `cities` با جداول `states` و `countries` جوین می‌شود.
    - اگر `search` ارسال شده باشد، در نام‌های فارسی و انگلیسی (شهر، استان، کشور) جستجو می‌کند.
    - نتایج بر اساس `priority` مرتب شده و حداکثر ۳۰ مورد بازگردانده می‌شود.
2. **جستجوی اقامتگاه‌ها (Accommodations Search):**
    - **شرط اجرا:** تنها در صورتی اجرا می‌شود که پارامتر `search` خالی نباشد.
    - **فیلتر:** فقط اقامتگاه‌های فعال (`status=1`).
    - **دامنه جستجو:** عنوان (فارسی/انگلیسی)، آدرس، و نام مکان‌های جغرافیایی مرتبط.
    - **بهینه‌سازی (Redis):** ابتدا شناسه (ID) هتل‌ها پیدا می‌شود. سپس سیستم چک می‌کند آیا اطلاعات کامل هتل در **Redis** (کلید: `accommodations:{id}`) وجود دارد یا خیر. 
        - اگر در کش نباشد: تابع `StaticController::getAccommodation` فراخوانی شده و نتیجه در Redis ذخیره می‌شود.
        - اگر در کش باشد: اطلاعات از Redis خوانده می‌شود.
    - **ترجمه نوع:** نوع اقامتگاه (مثلا hotel) توسط تابع `getTitleType` به فارسی (هتل) تبدیل می‌شود.

</div>---

  </div>### Response Structure

```json
{
    "status": true,
    "time": 1702123456,
    "data": {
        "cities": [ ...Array of Cities OR false... ],
        "accommodation": [ ...Array of Hotels OR false... ]
    }
}
```

#### 1. ساختار آبجکت شهر (Inside `cities` array)

```json
{
    "id": 10,
    "title": {
        "fa": "تهران",
        "en": "Tehran"
    },
    "country": {
        "fa": "ایران",
        "en": "Iran"
    },
    "state": {
        "fa": "تهران",
        "en": "Tehran"
    },
    "category": {
        "title": "شهر",
        "subtitle": false
    }
}
```

#### 2. ساختار آبجکت اقامتگاه (Inside `accommodation` array)

```json
{
    "id": 505,
    "en_title": "Espinas Palace",
    "fa_title": "هتل اسپیناس پالاس",
    "type": "هتل",  // Translated value
    "category": {
        "title": "هتل",
        "subtitle": false
    },
    "order": 1,
    // ... سایر فیلدهای بازگردانده شده از Redis/StaticController ...
}
```

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

  </div>### Accommodation Types Mapping

مقادیر فیلد `type` در خروجی اقامتگاه‌ها به صورت خودکار به فارسی ترجمه می‌شوند:

<div class="api-docs" id="bkmrk-database-value-%28key%29"><table class="schema-table" dir="rtl"><thead><tr><th>Database Value (key)</th><th>Output Value (fa)</th></tr></thead><tbody><tr><td dir="ltr">hotel</td><td>هتل</td></tr><tr><td dir="ltr">apartment</td><td>آپارتمان</td></tr><tr><td dir="ltr">suite</td><td>سویت</td></tr><tr><td dir="ltr">house</td><td>خانه</td></tr><tr><td dir="ltr">villa</td><td>ویلا</td></tr><tr><td dir="ltr">traditional</td><td>بومگردی</td></tr><tr><td dir="ltr">motel</td><td>موتل</td></tr><tr><td dir="ltr">guesthouse</td><td>میهمانسرا</td></tr></tbody></table>

</div>