# GET /v2/charter/communications

# Charter: List Communications

این اندپوینت لیست "ارتباطات" (Communications) تعریف شده بین چارترها را برمی‌گرداند. این جدول معمولاً برای تعریف مسیرهای متصل (Connecting Flights) یا ارتباط بین یک چارتر اصلی و چارترهای وابسته استفاده می‌شود. خروجی شامل دو بخش اصلی `src` (چارتر مبدا) و `dst` (چارتر مقصد/متصل) است.

<div class="api-docs" id="bkmrk-"></div>## Request Overview

<div class="api-docs" id="bkmrk-url%3A-%2Fv2%2Fcharter%2Fcom"><div class="endpoint-info"><div>**URL:** `/v2/charter/communications`</div><div>**Method:** <span class="method-get">GET</span></div><div>**Controller:** CharterController@listCommunicationsCharter</div><div>**Middleware Stack:** authWithJwt</div></div></div>## Access Control

<div class="api-docs" id="bkmrk-%D8%AF%D8%B3%D8%AA%D8%B1%D8%B3%DB%8C-%D9%85%D8%B9%D8%AA%D8%A8%D8%B1-jwt">- دسترسی معتبر JWT

</div>## Request Parameters

<div class="api-docs" id="bkmrk-parameter-type-descr"><table class="schema-table" dir="rtl"><thead><tr><th>Parameter</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>origin</td><td>integer</td><td>شناسه شهر مبدا.  
<small>سیستم ابتدا چارترهایی که `origin` آنها برابر این مقدار است را پیدا کرده و سپس در جدول ارتباطات جستجو می‌کند.</small></td></tr><tr><td>destination</td><td>integer</td><td>شناسه شهر مقصد (واسط).  
<small>توجه: سیستم چارترهایی که **origin** (مبدا) آن‌ها برابر با این مقدار است را پیدا می‌کند (منطق پرواز کانکشن: پرواز دوم از اینجا شروع می‌شود).</small></td></tr><tr><td>main\_id</td><td>integer</td><td>شناسه مستقیم چارتر اصلی (Source Main ID)</td></tr><tr><td>item\_id</td><td>integer</td><td>شناسه آیتم/کلاس چارتر اصلی (Source Item ID)</td></tr><tr><td>destination\_main\_id</td><td>integer</td><td>شناسه چارتر مقصد (Destination Main ID)</td></tr><tr><td>destination\_item\_id</td><td>integer</td><td>شناسه آیتم/کلاس چارتر مقصد (Destination Item ID)</td></tr><tr><td>paginate\[length\]</td><td>integer</td><td>تعداد آیتم در صفحه</td></tr><tr><td>paginate\[start\]</td><td>integer</td><td>آفست شروع</td></tr></tbody></table>

</div>## Logic Details

### ۱. فیلتر هوشمند مبدا و مقصد

این متد مستقیماً روی جدول `charter_communications` جستجو نمی‌کند، بلکه ابتدا شناسه‌های معتبر را از جدول `charters` استخراج می‌کند:

<div class="api-docs" id="bkmrk-%D8%A7%DA%AF%D8%B1-origin-%D8%A7%D8%B1%D8%B3%D8%A7%D9%84-%D8%B4%D9%88%D8%AF">- **اگر `origin` ارسال شود:** لیست ID چارترهایی که از این شهر شروع می‌شوند را می‌گیرد و در فیلد `main_id` جستجو می‌کند.
- **اگر `destination` ارسال شود:** لیست ID چارترهایی که از این شهر شروع می‌شوند (به عنوان لگ دوم سفر) را می‌گیرد و در فیلد `communication_main_id` جستجو می‌کند.

</div>### ۲. غنی‌سازی داده‌ها (Data Enrichment)

پس از دریافت لیست خام ارتباطات، برای هر رکورد توابع زیر صدا زده می‌شوند تا جزئیات کامل برگردانده شود:

<div class="api-docs" id="bkmrk-getcommunicationscha">- `getCommunicationsCharter`: اطلاعات کلی پرواز/قطار (مبدا، مقصد، زمان).
- `getCommunicationsCalculation`: اطلاعات کلاس نرخی (Business/Economy) یا نوع قطار (4 تخته و ...).

</div>## Response Structure

```
{
  "items": {
    "communication": [
      {
        "id": 501,
        "title": "Tehran to Mashhad (Connection)",
        "src": {
          "main": {
             "id": 100,
             "type": "route",
             "subtype": "aircraft",
             "information": { "origin": 1, "destination": 2, ... },
             "calculations": [...]
          },
          "item": {
             "class": { "iata": "Y", "title_en": "Economy", ... }
          },
          "type": "system" // source_type
        },
        "dst": {
          "main": { ... }, // اطلاعات چارتر دوم
          "item": { ... }, // اطلاعات کلاس چارتر دوم
          "type": "charter" // destination_type
        }
      }
    ]
  },
  "meta": {
    "timestamp": 1715000000,
    "table": { "total": 10, ... }
  }
}
  
```

<div class="api-docs" id="bkmrk--1"></div>## Flowchart

<div class="api-docs" id="bkmrk-start-%28get-%2Fcommunic"><div class="flowchart"><div class="flow-item">Start (GET /communications)</div><div class="flow-arrow">↓</div><div style="border: 1px dashed #ccc; padding: 10px; border-radius: 8px;">**ID Resolution**<div class="flow-item">If Origin set? → Find Charters starting at Origin → Get IDs</div><div class="flow-arrow">↓</div><div class="flow-item">If Dest set? → Find Charters starting at Dest → Get IDs</div></div><div class="flow-arrow">↓</div><div class="flow-item">Query `charter_communications` (Apply Filters)</div><div class="flow-arrow">↓</div><div class="flow-item">Paginate Results</div><div class="flow-arrow">↓</div><div class="flow-item">Loop through items (Map)</div><div class="flow-arrow">↓</div><div style="display: flex; justify-content: space-around; gap: 10px;"><div style="width: 45%; text-align: center;"><div class="flow-item" style="font-size: 0.8em;">Fetch SRC Charter Details</div><div class="flow-arrow">↓</div><div class="flow-item" style="font-size: 0.8em;">Get Class/Train Info</div></div><div style="width: 45%; text-align: center;"><div class="flow-item" style="font-size: 0.8em;">Fetch DST Charter Details</div><div class="flow-arrow">↓</div><div class="flow-item" style="font-size: 0.8em;">Get Class/Train Info</div></div></div><div class="flow-arrow">↓</div><div class="flow-item">Format JSON Response</div></div></div>