Skip to main content
#P1788

GET /b2c/v1/base/accommodations/list


Search Accommodations & Cities

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




Get Accommodation List

URL: /b2c/v1/base/accommodations/list
Method: GET
Controller: V1BaseController@accommodationList
Auth: Optional (Public)

Query Parameters (پارامترهای ورودی)

Parameter Type Required Description
search String No عبارت مورد نظر برای جستجو.
در نام شهر، نام هتل، آدرس، نام استان و نام کشور (فارسی و انگلیسی) جستجو می‌شود.

Business Logic (منطق تجاری)

  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 به فارسی (هتل) تبدیل می‌شود.

Response Structure

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

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

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

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

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

Accommodation Types Mapping

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

Database Value (key) Output Value (fa)
hotel هتل
apartment آپارتمان
suite سویت
house خانه
villa ویلا
traditional بومگردی
motel موتل
guesthouse میهمانسرا