#P1096
Function listCommunicationsCharter
· هدف:
این متد برای جستجو و واکشی “ارتباطات” (Communications) بین چارترها طراحی شده است. یک ارتباط، اتصال منطقی بین دو چارتر یا آیتمهای آنها را نشان میدهد (مثلاً برای ساخت پکیجهای تور رفت و برگشت از دو چارتر مجزا). هدف اصلی متد، فراهم کردن یک ابزار فیلترینگ قدرتمند برای یافتن این ارتباطات بر اساس پارامترهای مختلفی مانند شناسه چارتر مبدأ/مقصد، شناسه آیتم مبدأ/مقصد، یا حتی مبدأ و مقصد جغرافیایی است. برای فیلتر بر اساس مبدأ/مقصد جغرافیایی، متد ابتدا تمام چارترهای فعال با آن مبدأ/مقصد را پیدا کرده و سپس از شناسههای آنها برای فیلتر کردن جدول charter_communications استفاده میکند. خروجی نهایی با استفاده از CharterResource غنیسازی شده و اطلاعات کاملی از هر دو طرف ارتباط (مبدأ و مقصد) را ارائه میدهد.
| ویژگیها | توضیحات |
| هدف کلی | جستجو و نمایش ارتباطات تعریفشده بین چارترها. |
| فیلترینگ جامع | قابلیت فیلتر بر اساس شناسه چارتر/آیتم مبدأ و مقصد. |
| فیلتر جغرافیایی | پشتیبانی از فیلتر بر اساس شهر مبدأ (origin) و مقصد (destination). |
| صفحهبندی | مدیریت خودکار صفحهبندی نتایج بر اساس پارامترهای ورودی. |
| غنیسازی خروجی | استفاده از CharterResource::getInformation برای افزودن جزئیات کامل چارترها به هر نتیجه. |
| کاربرد اصلی | مدیریت و نمایش پکیجهای تور یا مسیرهای متصل به هم. |
· ورودیها (پارامترها):
| توضیحات | موقعیت | نوع داده | نام پارمتر |
| شناسه چارتر مبدأ. | Query |
integer |
main_id |
| شناسه آیتم مبدأ. | Query |
integer |
item_id |
| شناسه چارتر مقصد در ارتباط. | Query |
integer |
destination_main_id |
| شناسه آیتم مقصد در ارتباط. | Query |
integer |
destination_item_id |
| شناسه شهر مبدأ برای جستجوی جغرافیایی. | Query |
integer |
origin |
| شناسه شهر مقصد برای جستجوی جغرافیایی. | Query |
integer |
destination |
پارامترهای صفحهبندی (length, start). |
Query |
array |
paginate |
· خروجی (Return):
| توضیحات | نوع داده |
یک آبجکت JSON با کلید items (آرایهای از آبجکتهای ارتباط) و meta. هر آبجکت ارتباط شامل جزئیات کامل چارتر مبدأ (charter) و چارتر مقصد (communication_charter) است. |
Illuminate\Http\JsonResponse |
در صورت بروز خطا، یک پاسخ با کد 400 Bad Request |
Illuminate\Http\JsonResponse |
· مثال استفاده / سناریو:
سناریو: یافتن تمام ارتباطهایی که از تهران شروع میشوند
- Request URL:
/api/panel/v2/charter/communication/list?origin=1 - Action:
- متد ابتدا تمام شناسههای چارترهای فعال که مبدأ آنها
1(تهران) است را از جدولchartersاستخراج میکند. - سپس یک کوئری به جدول
charter_communicationsمیزند و با استفاده ازWHERE IN ('main_id', ...)نتایج را به چارترهای یافتشده در مرحله قبل محدود میکند. - نتایج صفحهبندی میشوند.
- برای هر نتیجه، اطلاعات کامل چارتر مبدأ و مقصد واکشی و به خروجی اضافه میشود.
- Response:
HTTP Status:200 OKBody:{"items": [{ "id": 1, "main_id": 101, "communication_main_id": 202, "charter": {...info for charter 101...}, "communication_charter": {...info for charter 202...} }, ...], "meta": {...}}