#P1782
GET /b2c/v1/user/passengers
Get User Passengers List
این اندپوینت لیست تمامی مسافران مرتبط با حساب کاربری فعلی را باز میگرداند.
سیستم لیست مسافران را از دو منبع استخراج میکند:
- سابقه خرید (History): افرادی که کاربر لاگین شده قبلاً در فاکتورهای خود (`factors`) برای آنها بلیط (`factor_items`) تهیه کرده است (به جز خود کاربر).
- زیرمجموعهها (Relationship): افرادی که در پروفایل کاربر به عنوان همراه یا خانواده تعریف شدهاند (`relationship = user_id`).
Fetch Passengers
URL:
/b2c/v1/user/passengersMethod: GET
Controller: V1UserController@passengersList
Auth: Required (Bearer Token)
Headers (الزامی)
| Header Name | Description |
|---|---|
| Authorization | توکن احراز هویت (Bearer Token). |
| Domain | دامنه سایت. |
Response Structure
| Key | Type | Description |
|---|---|---|
| status | Boolean | وضعیت درخواست. |
| time | Timestamp | زمان سرور. |
| data | Array[Object] | لیست کامل آبجکتهای مسافران (از جدول customers). |
| ↳ id | Integer | شناسه مسافر. |
| ↳ first_name / last_name | String | نام و نام خانوادگی. |
| ↳ national_code | String | کد ملی. |
| ↳ passport_number | String | شماره پاسپورت (در صورت وجود). |
| ↳ gender | Boolean/Int | جنسیت (معمولاً 1: مرد، 0: زن). |
| ↳ birthday | String | تاریخ تولد. |
Example Responses
۱. موفقیت آمیز (200 OK):
{
"status": true,
"time": 1702145000,
"data": [
{
"id": 501,
"first_name": "Saeed",
"last_name": "Mohammadi",
"first_name_fa": "سعید",
"last_name_fa": "محمدی",
"national_code": "0077777777",
"gender": 1,
"birthday": "1990-05-20",
"passport_number": "A12345678",
"relationship": 105,
"created_at": "2023-01-01 12:00:00"
},
{
"id": 890,
"first_name": "Sara",
"last_name": "Tehrani",
"first_name_fa": "سارا",
"last_name_fa": "تهرانی",
"national_code": "0088888888",
"gender": 0,
"birthday": "1995-10-10",
"passport_number": null,
"relationship": null,
"note": "Fetched from history"
}
]
}
Technical Logic
Request (GET)
↓
Identify User
Get
Get
operator->id from JWT↓
Query 1: Purchase History
Find `customer_id` in `factor_items` where:
1. Invoice owner is User (`factors.customer == id`)
2. Passenger is NOT User (`customer_id != id`)
Find `customer_id` in `factor_items` where:
1. Invoice owner is User (`factors.customer == id`)
2. Passenger is NOT User (`customer_id != id`)
↓
Query 2: Fetch Customers
Condition A:
OR
Condition B:
SELECT * FROM customers WHERE:Condition A:
relationship == user_idOR
Condition B:
id IN [History IDs]↓
Return List