Skip to main content
#P1804

GET /b2c/v1/passengers/previous

List Previous Passengers

این اندپوینت جهت واکشی لیست مسافرانی که پیش‌تر در رزروهای کاربر (یا همکار) شرکت داشته‌اند طراحی شده است. اطلاعات از جدول customers واکشی شده و شامل جزئیات هویتی، ملیتی، گذرنامه و تماس فرد می‌باشد.



Endpoint Info

URL: /b2c/v1/passengers/previous
Method: GET
Controller: PassengersController@indexPassengersPrevious
Auth: 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 جهت تطبیق زمانی اضافه می‌شود.