#P1740
GET /v2/core/hub/information
Hub: Get Basic Information
این اندپوینت به عنوان یک مسیر عمومی برای دریافت اطلاعات پایهای و مرکزی (Hub Information) عمل میکند. رفتار این اندپوینت بر اساس پارامتر action که در کوئری استرینگ ارسال میشود، تغییر میکند.
در حال حاضر، این مسیر تنها برای دریافت لیست تمام دفاتر (Offices) پیادهسازی شده است.
Request Overview
URL:
/v2/core/hub/informationMethod: GET
Controller: HubController@getBasicInformation
Middleware: authWithJwt
Access Control
- نیاز به توکن احراز هویت (JWT) دارد.
Query Parameters
| Field | Type | Description |
|---|---|---|
| action | string | (اختیاری) عملکرد مورد نظر را مشخص میکند. اگر مقدار آن برابر با 'offices' باشد، لیست دفاتر برگردانده میشود. در غیر این صورت، خروجی متفاوت خواهد بود. |
Logic Details
منطق این اندپوینت کاملاً به پارامتر action وابسته است:
- بررسی شرط: سیستم ابتدا بررسی میکند که آیا پارامتر
actionدر درخواست وجود دارد و مقدار آن برابر با'offices'است یا خیر. - سناریو ۱: اگر
action = 'offices'باشد:- یک کوئری به جدول
officesدر دیتابیس زده میشود و فیلدهایid,brand_faوbrand_enبرای تمام رکوردها استخراج میشود. - نتایج با استفاده از متد
mapپردازش میشوند تا ساختار خروجی تغییر کند:- فیلد
idبدون تغییر باقی میماند. - یک آبجکت جدید به نام
titleایجاد میشود که دارای دو کلیدfaوenاست. - مقدار هر عنوان با فرمول زیر ساخته میشود:
(شناسه دفتر + 10,000) - نام برند
برای مثال، اگرid=25وbrand_fa='آژانس تابان'باشد، خروجی'10025 - آژانس تابان'خواهد بود.
- فیلد
- آرایه تبدیل شده در فیلد
itemsپاسخ نهایی قرار میگیرد.
- یک کوئری به جدول
- سناریو ۲: اگر
actionارسال نشود یا مقداری غیر از'offices'داشته باشد:- شرط اصلی برقرار نمیشود و بلوک کد مربوط به کوئری دفاتر اجرا نمیگردد.
- در این حالت، متغیر
$itemsتعریف نمیشود. - نکته کلیدی: به دلیل تعریف نشدن متغیر
$items، در پاسخ JSON نهایی، مقدار فیلدitemsبرابر باnullخواهد بود.
Response Structure
پاسخ موفق (برای action=offices)
- Status Code:
200 OK
{
"items": [
{
"id": 25,
"title": {
"fa": "10025 - آژانس تابان",
"en": "10025 - Taban Agency"
}
},
{
"id": 26,
"title": {
"fa": "10026 - آژانس سپهر",
"en": "10026 - Sepehr Agency"
}
}
],
"meta": {
"timestamp": 1733736000
}
}
پاسخ برای سایر مقادیر action (یا عدم ارسال آن)
- Status Code:
200 OK - در این حالت، مقدار
itemsبرابر باnullاست.
{
"items": null,
"meta": {
"timestamp": 1733736100
}
}
Flowchart
Start Request (GET /v2/core/hub/information)
↓
Query Param `action` == 'offices'?
No
`$items` is not initialized
↓
Return 200 OK with `items: null`
↓ (Yes)
Query `offices` table (select id, brand_fa, brand_en)
↓
Map results to new structure:
`title.fa = (id + 10k) + ' - ' + brand_fa`
`title.en = (id + 10k) + ' - ' + brand_en`
`title.fa = (id + 10k) + ' - ' + brand_fa`
`title.en = (id + 10k) + ' - ' + brand_en`
↓
Return 200 OK with formatted `items` array