#P1661
GET /v2/core/accommodation/view
Core Accommodation: View Details
این اندپوینت برای دریافت جزئیات کامل یک هتل در سیستم Core استفاده میشود. دادهها از جداول اصلی (hotels، countries، states، cities)، جدول mapping_accommodations و جدول media بارگذاری شده و سپس در یک ساختار استاندارد و نرمالسازی شده بازگردانده میشوند.
Request Overview
URL:
/v2/core/accommodation/viewMethod: GET
Controller: CoreController@viewAccommodation
Middleware Stack: authWithJwt (بدون core)
Access Control
- نیازمند JWT معتبر
- در این روت middleware
coreوجود ندارد → برای تمام کاربران معتبر قابل مشاهده است
Request Query Parameters
| Field | Type | Required | Description |
|---|---|---|---|
| id | integer | yes | شناسه هتل در جدول hotels |
Hotel Record Loading
جزئیات اولیه هتل از جدول hotels بارگذاری میشود:
$item = DB::table('hotels')
->where('id', request->id)
->first();
- اگر مقدار country برابر null باشد، مقدار پیشفرض 118 جایگزین میشود
Country Resolution
کشور با شرطهای زیر لود میشود:
- status = 1
- fa_nationality != null
[
"id" => country.id,
"icon" => country.iso,
"title" => [
"fa" => country.fa_name,
"en" => country.en_name
],
"nationality" => [
"fa" => country.fa_nationality,
"en" => country.en_nationality
]
]
State Resolution
$state = [
"id" => state.id,
"title" => [
"fa" => state.title_fa,
"en" => state.title_en
]
];
City Resolution
$city = [
"id" => city.id,
"title" => [
"fa" => city.title_fa,
"en" => city.title_en
]
];
Mapping Resolution
اگر رکورد فعال وجود داشته باشد، فیلدهای null به false تبدیل میشوند؛ در غیر این صورت مقدار نهایی false است.
{
"tport": value or false,
"sepehr": value or false,
"snapptrip": value or false,
"alibaba": value or false,
"eghamat24": value or false,
"iranhotelonline": value or false
}
Media Resolution
همه مدیاها با شرطهای زیر لود میشوند:
ساختار خروجی نهایی مدیا:
{
"logo": "/path/to/logo.jpg" or false,
"media": ["/path/a.jpg","/path/b.jpg"] or false
}
Final Response Mapping
ساختار کلی:
{
"title": {
"fa": item.fa_title,
"en": item.en_title
},
"type": item.type,
"rate": item.rate,
"country": country_object,
"state": state_object,
"city": city_object,
"phone": item.phone,
"mobile": item.mobile,
"email": item.email,
"site": item.site,
"address": item.address,
"location": item.location,
"logo": logo or false,
"media": media_list or false,
"details": json_decode(item.details),
"board": json_decode(item.board),
"possibilities": json_decode(item.possibilities),
"leader_name": item.leader_name,
"leader_mobile": item.leader_mobile,
"description": item.description,
"confirm_status": item.confirm_status,
"priority": item.priority,
"mapping": mapping_object or false,
"status": item.status
}
Response (Success)
{
"status": true,
"time": 1710000000,
"data": { ... }
}
Response (Error)
{
"status": false,
"code": "1003",
"message": "Exception message",
"trace": [...]
}
Flowchart
Validate JWT
↓
Load hotel record
↓
Resolve country/state/city
↓
Load mapping_accommodations
↓
Load media (logo + gallery)
↓
Assemble standard response
↓
Return final JSON