#P1804
GET /b2c/v1/passengers/previous
List Previous Passengers
این اندپوینت جهت واکشی لیست مسافرانی که پیشتر در رزروهای کاربر (یا همکار) شرکت داشتهاند طراحی شده است. اطلاعات از جدول customers واکشی شده و شامل جزئیات هویتی، ملیتی، گذرنامه و تماس فرد میباشد.
Endpoint Info
URL:
/b2c/v1/passengers/previousMethod: GET
Controller:
PassengersController@indexPassengersPreviousAuth: JWT Required (
middleware: authWithJwt)Query Parameters (from JWT + Request)
| پارامتر | نوع | اجباری | توضیح |
|---|---|---|---|
| operator.id | integer | ✅ | شناسه اپراتور / مسافر اصلی (از JWT) |
| group | string | ✅ | نوع گروه کاربری فعال. مقادیر مجاز: b2c، b2b، colleague. |
Logic Flow
📥 دریافت شناسه اپراتور از JWT →
$passengerId = $request->get('operator')->id↓
بررسی وجود
passengerId. اگر نباشد، پاسخ خطای 400 با پیام Passenger ID is required و code = passenger_id_required.↓
۱. واکشی مسافران قبلی:
- اگر گروه کاربری
b2bیاcolleagueباشد:- از جدول
factorsرکوردهایی کهcolleague_auth = operator.idدارند و وضعیتشان خارج از [2,5] است استخراج میشود. - مقادیر فیلد
customerاز آنها گرفته و از جدولcustomersواکشی میشود.
- از جدول
- اگر گروه کاربری
b2cباشد: در جدولcustomersرکوردهایی کهrelationship = passengerIdهستند واکشی میشوند.
orWhere('id', passengerId) به نتایج افزوده میشود.↓
۲. تبدیل دادهها:
برای هر مسافر:
برای هر مسافر:
- در صورت نبود ملیت،
citizenship = 118(ایران) تنظیم میشود. - دادهٔ کشور از جدول
countriesفیلتر میشود باstatus=1وfa_nationality IS NOT NULL. - تارگت خروجی شامل ساختارهای استاندارد برای fullname، identity، passport، mobile، birth و ... است.
↓
✅ خروجی نهایی:
{"items": [...], "meta": {"timestamp": time()}}Response Samples
✅ موفق - لیست مسافران قبلی
{
"items": [
{
"id": 1547,
"gender": 1,
"fullname": {
"first_name": { "fa": "علیرضا", "en": "Alireza" },
"last_name": { "fa": "رضایی", "en": "Rezaei" }
},
"email": "alireza@example.com",
"mobile": "09123456789",
"birth": "13721021",
"identity": {
"id": "1234567890",
"nationality": {
"id": 118,
"iso": "IR",
"title": { "fa": "ایران", "en": "Iran" },
"nationality": { "fa": "ایرانی", "en": "Iranian" }
}
},
"passport": {
"id": "P98651234",
"expire_at": "20270930"
}
}
],
"meta": { "timestamp": 1733752711 }
}
❌ خطا – Passenger ID خالی
{
"error": {
"message": "Passenger ID is required",
"code": "passenger_id_required"
},
"meta": { "timestamp": 1733752715 }
}
Technical Notes
- منبع اصلی داده: جدول
customers، با ارتباط ضمنی از فیلدrelationshipبه شناسهٔ اپراتور. - در حالت B2B/Colleague، ارتباط با فیلد
colleague_authاز جدولfactorsبرقرار میشود. - ملیتها از جدول
countriesبر اساس وضعیت فعال (status=1) و فیلدهایfa_nationality/en_nationalityاستخراج میشوند. - فرایند map در انتها دادهها را از آبجکت DB به قالب JSON با فرمت Front‑Friendly تبدیل میکند.
- در همه پاسخها کلید
meta.timestampجهت تطبیق زمانی اضافه میشود.