Skip to main content
#P1463

GET /api/v2/online/accommodation/get_room_type_prices

Route Info

Method Endpoint Controller Middleware Purpose
GET /api/v2/online/accommodation/get_room_type_prices OnlineController@getRoomTypePrices authWithJwt دریافت قیمت، ظرفیت و رفتاری اتاق‌ها برای یک اقامتگاه خاص

Logic

تابع به‌ترتیب، اقامتگاه را در جدول mapping_accommodations پیدا می‌کند و پس‌ از گرفتن اتاق‌ها از accommodation_roomtypes، چهار Provider (سرویس‌دهنده) فعال را تشخیص می‌دهد. برای هر Provider فعال (Tport، Sepehr، AirPlus، SnappTrip)، API اختصاصی فراخوانی شده و قیمت، ظرفیت و board typeها برگشت داده می‌شوند. تمام قیمت‌ها توسط BaseService::getRoomTypeMarkups() براساس branch/group/level محاسبه می‌گردند.

Input

  • accommodation_id (Integer) – شناسه اقامتگاه
  • checkin_date / checkout_date (String) – تاریخ ورود و خروج
  • adults_count (Integer)
  • children_count (Integer)
  • branch, group, level (درون JWT)

Response

{
  "Status": true,
  "Time": 1732050987,
  "Data": [
    {
      "id": 502,
      "name": "Double Standard",
      "board_type_list": [
        {
          "service": "tport",
          "DisplayableService": "airplusHub",
          "supplier": {"title_fa":"TPort Supplier 1"},
          "financial_total":{"net_price":3980000,"markup":198000}
        }
      ],
      "purchase_capacity": 3
    }
  ]
}

Security

JWT الزامی است؛ هر درخواست  باید شامل branch/group/level برای markup دقیق باشد.

Dependencies

  • TportApi::sendRequestAccommodation()
  • SepehrApi::sendRequestAccommodation()
  • AirPlusApi::sendRequest()
  • SnappTripApi::sendRequestAccommodation()
  • BaseService::getRoomTypeMarkups()
  • Redis برای کش حداقل‌قیمت هر اقامتگاه → کلید accommodations:min_price:{id}

Performance

تعداد فراخوانی API تا ۴ عدد ممکن است. بهتر است در نسخه بعد با async موارد تجمیع (Parallel) شوند. پاسخ میانگین : ۲ – ۴ ثانیه

Error Handling

{
 "Status": false,
 "Code": 1002,
 "Message": "No active provider data"
}

Side Effects

هیچ تغییر داده‌ای در DB ندارد؛ صرفاً Read با write در cache Redis.

Audit Trail

هر فراخوانی API در جدول system_logs با نوع "AccommodationRoomTypeRequest" ثبت می‌گردد.

Improvement

  • افزودن پارامتر currency برای تبدیل قیمت.
  • ایجاد threaded request برای سرویس‌های خارجی.
  • cache تفکیکی براساس (اقامتگاه+تاریخ+branch).

Conclusion

هسته‌ی Versatile Pricing Engine اقامتگاه‌هاست و مستقیماً به مرحله Lock/CheckStatus منتهی می‌شود.