Skip to main content
#P1686

GET /v2/charter/services/list

Charter: List Service Categories & Services

این اندپوینت برای دریافت لیست دسته‌بندی‌های خدمات چارتر به‌همراه سرویس‌های زیرمجموعه هر دسته استفاده می‌شود. داده‌ها از جداول charter_service_categories و charter_services بارگذاری شده و فقط مواردی که status = 1 دارند بازگردانده می‌شوند.

Request Overview

URL: /v2/charter/services/list
Method: GET
Controller: CharterController@listServicesCharter
Middleware Stack: authWithJwt

Access Control

  • JWT معتبر لازم است
  • هیچ محدودیت branch یا core middleware وجود ندارد
  • اطلاعات اپراتور از طریق JWT تزریق می‌شود:
    $request->get('operator')

Query Parameters

این اندپوینت هیچ پارامتر ورودی (Query / Body) ندارد.

Response Structure

خروجی موفق شامل کلیدهای زیر است:

Field Type Description
status boolean وضعیت موفقیت درخواست
time integer Unix timestamp زمان تولید پاسخ
data array آرایه‌ای از دسته‌بندی‌ها به همراه سرویس‌های هر دسته

Category Object Schema

Field Type Description
id integer شناسه دسته‌بندی
title.fa string عنوان فارسی
title.en string عنوان انگلیسی
services array لیست سرویس‌های زیرمجموعه (در صورت نبود، آرایه خالی)

Service Object Schema

Field Type Description
id integer شناسه سرویس
title string عنوان سرویس
type string نوع سرویس
description string|null توضیحات سرویس (می‌تواند null باشد)

Core Processing Logic

$categories = DB::table('charter_service_categories')
    ->select('id','title_fa','title_en')
    ->where('status', 1)
    ->get();

foreach ($categories as $category) {
    $services = DB::table('charter_services')
        ->select('id','title','type','description')
        ->where('category', $category->id)
        ->where('status', 1)
        ->get();
}
  
  • ابتدا دسته‌ها با status=1 واکشی می‌شوند
  • برای هر دسته، سرویس‌های فعال لود می‌شوند
  • اگر سرویس وجود نداشته باشد → آرایه خالی برگردانده می‌شود
  • خروجی نهایی شامل تمام دسته‌ها + سرویس‌هایشان است

Response (Success)

{
  "status": true,
  "time": 1710000000,
  "data": [
    {
      "id": 1,
      "title": {
        "fa": "عنوان فارسی",
        "en": "English Title"
      },
      "services": [
        {
          "id": 100,
          "title": "VIP Lounge",
          "type": "lounge",
          "description": "Access to VIP lounge"
        }
      ]
    }
  ]
}
  

Response (Error)

در صورت Exception (به دلیل وجود try/catch):

{
  "status": false,
  "time": 1710000000,
  "message": "Exception message here",
  "trace": [ ... ]
}
  

Flowchart

Validate JWT
Load Active Categories
For Each Category → Load Services
Assemble Response Array
Return JSON (status=true)