# Function listCharter

### <a name="func_1"></a>

#### <span style="font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;"><span style="mso-list: Ignore;">·</span></span><span lang="AR-SA"><span style="mso-spacerun: yes;"> </span>هدف:</span>

این متد به عنوان یک موتور جستجو و لیست‌ساز قدرتمند برای چارترها عمل می‌کند. هدف اصلی آن فراهم کردن یک رابط کاربری منعطف برای بازیابی چارترها بر اساس مجموعه‌ی گسترده‌ای از فیلترها، از جمله فیلترهای ساده (مانند `serial`, `type`) و جستجوی پیشرفته (`advanced`) است. بخش `advanced` امکان فیلتر بر اساس بازه زمانی، مبدأ، مقصد، دوطرفه بودن (`roundtrip`)، نوع مسیر (هوایی، ریلی و…) و وضعیت (فعال/غیرفعال) را فراهم می‌کند. متد به طور خودکار صفحه‌بندی (Pagination) را مدیریت کرده و مقادیر پیش‌فرض را در صورت عدم ارائه، تنظیم می‌کند. یک ویژگی خاص این متد، قابلیت مرتب‌سازی معکوس (`action == 'list'`) نتایج است که برای نمایش آخرین موارد ثبت‌شده در ابتدا کاربرد دارد. همچنین، این متد با در نظر گرفتن سطح دسترسی کاربر، نتایج را فقط به شعبه مربوط به همان کاربر محدود می‌کند (مگر اینکه کاربر ادمین اصلی با `branch=1` باشد).

<table border="1" class="align-center" id="bkmrk-%D9%88%DB%8C%DA%98%DA%AF%DB%8C%E2%80%8C%D9%87%D8%A7-%D8%AA%D9%88%D8%B6%DB%8C%D8%AD%D8%A7%D8%AA-%D9%87%D8%AF%D9%81" style="border-collapse: collapse; width: 80.9524%; height: 196.891px; background-color: rgb(236, 202, 250); border: 1px inset rgb(206, 212, 217);"><colgroup><col style="width: 50.0736%;"></col><col style="width: 50.0736%;"></col></colgroup><thead><tr style="height: 30.7969px;"><td style="height: 30.7969px; border-color: rgb(206, 212, 217); background-color: rgb(132, 63, 161);"><span style="color: rgb(255, 255, 255);">**<span lang="AR-SA" style="font-family: 'B Titr';">ویژگی‌ها</span>**</span></td><td style="height: 30.7969px; border-color: rgb(206, 212, 217); background-color: rgb(132, 63, 161);"><span style="color: rgb(255, 255, 255);">**<span lang="AR-SA" style="font-family: 'B Titr';">توضیحات</span>**</span></td></tr></thead><tbody><tr style="height: 29.7969px; background-color: rgb(206, 212, 217);"><td style="height: 29.7969px; border-color: rgb(206, 212, 217); background-color: rgb(236, 202, 250);"><span style="color: rgb(0, 0, 0);">**<span lang="AR-SA">هدف کلی</span>**</span></td><td style="height: 29.7969px; border-color: rgb(206, 212, 217); background-color: rgb(236, 202, 250);"><span lang="AR-SA" style="color: rgb(0, 0, 0);">جستجو، فیلتر و صفحه‌بندی جامع چارترها.</span></td></tr><tr style="height: 29.7969px; background-color: rgb(206, 212, 217);"><td style="height: 29.7969px; border-color: rgb(206, 212, 217); background-color: rgb(255, 255, 255);"><span style="color: rgb(0, 0, 0);">**<span lang="AR-SA">فیلترهای اصلی</span>**</span></td><td dir="ltr" style="height: 29.7969px; border-color: rgb(206, 212, 217); background-color: rgb(255, 255, 255);"><span lang="AR-SA" style="color: rgb(0, 0, 0);">`serial`, `type`.</span></td></tr><tr style="height: 29.7969px; background-color: rgb(206, 212, 217);"><td style="height: 29.7969px; border-color: rgb(206, 212, 217); background-color: rgb(236, 202, 250);"><span style="color: rgb(0, 0, 0);">**<span lang="AR-SA">فیلتر پیشرفته</span>**</span></td><td style="height: 29.7969px; border-color: rgb(206, 212, 217); background-color: rgb(236, 202, 250);"><span style="color: rgb(0, 0, 0);">بازه زمانی (`from`, `to`)، مبدأ/مقصد، `roundtrip`، `subtype`, `status`.</span></td></tr><tr style="height: 30.1094px; background-color: rgb(206, 212, 217);"><td style="height: 30.1094px; border-color: rgb(206, 212, 217); background-color: rgb(255, 255, 255);"><span style="color: rgb(0, 0, 0);">**<span lang="AR-SA">مدیریت شعبه</span>**</span></td><td style="height: 30.1094px; border-color: rgb(206, 212, 217); background-color: rgb(255, 255, 255);"><span style="color: rgb(0, 0, 0);">محدودسازی خودکار نتایج به شعبه کاربر لاگین کرده.</span></td></tr><tr><td style="border-color: rgb(206, 212, 217); background-color: rgb(236, 202, 250);"><span style="color: rgb(0, 0, 0);">**<span lang="AR-SA">صفحه‌بندی</span>**</span></td><td style="border-color: rgb(206, 212, 217); background-color: rgb(236, 202, 250);"><span style="color: rgb(0, 0, 0);">مدیریت هوشمند پارامترهای `paginate` با مقادیر پیش‌فرض.</span></td></tr><tr><td style="border-color: rgb(206, 212, 217); background-color: rgb(255, 255, 255);"><span style="color: rgb(0, 0, 0);">**<span lang="AR-SA">مرتب‌سازی</span>**</span></td><td style="border-color: rgb(206, 212, 217); background-color: rgb(255, 255, 255);"><span style="color: rgb(0, 0, 0);">مرتب‌سازی پیش‌فرض بر اساس تاریخ شروع و شناسه.</span></td></tr><tr><td style="border-color: rgb(206, 212, 217); background-color: rgb(236, 202, 250);"><span style="color: rgb(0, 0, 0);">**<span lang="AR-SA">مرتب‌سازی معکوس</span>**</span></td><td style="border-color: rgb(206, 212, 217); background-color: rgb(236, 202, 250);"><span style="color: rgb(0, 0, 0);">قابلیت برعکس کردن ترتیب آیتم‌های صفحه فعلی با `action=list`.</span></td></tr><tr><td style="border-color: rgb(206, 212, 217); background-color: rgb(255, 255, 255);"><span style="color: rgb(0, 0, 0);">**<span lang="AR-SA">فرمت خروجی</span>**</span></td><td style="border-color: rgb(206, 212, 217); background-color: rgb(255, 255, 255);"><span style="color: rgb(0, 0, 0);">استفاده از `CharterResource` برای استانداردسازی آبجکت‌های JSON خروجی.</span></td></tr></tbody></table>

<div align="right" id="bkmrk-"></div>---

#### <span style="font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span lang="AR-SA">ورودی</span><span lang="FA" style="font-family: 'Calibri',sans-serif; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-language: FA;">‌ها (پارامتر‌ها):</span>

<span dir="LTR"> </span>

<table border="1" class="align-center" id="bkmrk-%D8%AA%D9%88%D8%B6%DB%8C%D8%AD%D8%A7%D8%AA-%D9%86%D9%88%D8%B9-%D8%AF%D8%A7%D8%AF%D9%87-%D9%86%D8%A7%D9%85" style="border-collapse: collapse; width: 80.9697%; height: 214.25px; background-color: rgb(236, 202, 250); border: 1px inset rgb(206, 212, 217);"><colgroup><col style="width: 49.9367%;"></col><col style="width: 12.4467%;"></col><col style="width: 12.4467%;"></col><col style="width: 25.0433%;"></col></colgroup><thead><tr style="height: 30.7969px;"><td style="height: 30.7969px; border-color: rgb(206, 212, 217); background-color: rgb(132, 63, 161);"><span style="color: rgb(255, 255, 255);">**<span lang="AR-SA" style="font-family: 'B Titr';">توضیحات</span>**</span></td><td style="border-color: rgb(206, 212, 217); background-color: rgb(132, 63, 161); height: 30.7969px;"><span style="color: rgb(255, 255, 255);">**<span lang="AR-SA" style="font-family: 'B Titr';">موقعیت</span>**</span></td><td style="height: 30.7969px; border-color: rgb(206, 212, 217); background-color: rgb(132, 63, 161);"><span style="color: rgb(255, 255, 255);">**<span lang="AR-SA" style="font-family: 'B Titr';">نوع داده</span>**</span></td><td style="border-color: rgb(206, 212, 217); background-color: rgb(132, 63, 161); height: 30.7969px;"><span style="color: rgb(255, 255, 255);">**<span lang="AR-SA" style="font-family: 'B Titr';">نام پارمتر</span>**</span></td></tr></thead><tbody><tr style="height: 47.2188px;"><td style="border-color: rgb(206, 212, 217); background-color: rgb(236, 202, 250); height: 47.2188px;"><span style="color: rgb(0, 0, 0);">**شناسه منحصر به فرد چارتری که باید حذف شود.**</span></td><td style="border-color: rgb(206, 212, 217); background-color: rgb(236, 202, 250); height: 47.2188px;">**<span style="color: black; mso-color-alt: windowtext;">`Query`</span>**</td><td style="border-color: rgb(206, 212, 217); background-color: rgb(236, 202, 250); height: 47.2188px;">**<span style="color: black; mso-color-alt: windowtext;">`string`</span>**</td><td style="border-color: rgb(206, 212, 217); background-color: rgb(236, 202, 250); height: 47.2188px;"><span style="color: rgb(0, 0, 0);">**`serial`**</span></td></tr><tr style="height: 30.1094px;"><td style="border-color: rgb(206, 212, 217); background-color: rgb(255, 255, 255); height: 30.1094px;"><span style="color: rgb(0, 0, 0);">**نوع چارتر (مثلاً `route`, `accommodation`).**</span></td><td style="border-color: rgb(206, 212, 217); background-color: rgb(255, 255, 255); height: 30.1094px;">**<span style="color: black; mso-color-alt: windowtext;">`Query`</span>**</td><td style="border-color: rgb(206, 212, 217); background-color: rgb(255, 255, 255); height: 30.1094px;">**<span style="color: black; mso-color-alt: windowtext;">`string`</span>**</td><td style="border-color: rgb(206, 212, 217); background-color: rgb(255, 255, 255); height: 30.1094px;"><span style="color: rgb(0, 0, 0);">**`type`**</span></td></tr><tr style="height: 46.9062px;"><td style="border-color: rgb(206, 212, 217); background-color: rgb(236, 202, 250); height: 46.9062px;"><span style="color: rgb(0, 0, 0);">**اگر مقدار `list` باشد، ترتیب نتایج صفحه فعلی معکوس می‌شود.**</span></td><td style="border-color: rgb(206, 212, 217); background-color: rgb(236, 202, 250); height: 46.9062px;">**<span style="color: black; mso-color-alt: windowtext;">`Query`</span>**</td><td style="border-color: rgb(206, 212, 217); background-color: rgb(236, 202, 250); height: 46.9062px;">**<span style="color: black; mso-color-alt: windowtext;">`string`</span>**</td><td style="border-color: rgb(206, 212, 217); background-color: rgb(236, 202, 250); height: 46.9062px;"><span style="color: rgb(0, 0, 0);">**`action`**</span></td></tr><tr style="height: 29.1094px;"><td style="border-color: rgb(206, 212, 217); background-color: rgb(255, 255, 255); height: 29.1094px;"><span style="color: rgb(0, 0, 0);">**آرایه‌ای برای مدیریت صفحه‌بندی شامل `length` (تعداد در صفحه) و `start` (نقطه شروع).**</span></td><td style="border-color: rgb(206, 212, 217); background-color: rgb(255, 255, 255); height: 29.1094px;">**<span style="color: black; mso-color-alt: windowtext;">`Query`</span>**</td><td style="border-color: rgb(206, 212, 217); background-color: rgb(255, 255, 255); height: 29.1094px;">**<span style="color: black; mso-color-alt: windowtext;">`array`</span>**</td><td style="border-color: rgb(206, 212, 217); background-color: rgb(255, 255, 255); height: 29.1094px;"><span style="color: rgb(0, 0, 0);">**`paginate`**</span></td></tr><tr style="height: 30.1094px;"><td style="border-color: rgb(206, 212, 217); background-color: rgb(236, 202, 250); height: 30.1094px;"><span style="color: rgb(0, 0, 0);">**آرایه‌ای برای فیلترهای پیشرفته.**</span></td><td style="border-color: rgb(206, 212, 217); background-color: rgb(236, 202, 250); height: 30.1094px;">**<span style="color: black; mso-color-alt: windowtext;">`Query`</span>**</td><td style="border-color: rgb(206, 212, 217); background-color: rgb(236, 202, 250); height: 30.1094px;">**<span style="color: black; mso-color-alt: windowtext;">`array`</span>**</td><td style="border-color: rgb(206, 212, 217); background-color: rgb(236, 202, 250); height: 30.1094px;"><span style="color: rgb(0, 0, 0);">**`advanced`**</span></td></tr></tbody></table>

**ساختار آرایه `advanced`:**

<div align="right" id="bkmrk-id%3A-integer---%D8%AC%D8%B3%D8%AA%D8%AC%D9%88-">- `id`: `integer` - جستجو بر اساس شناسه نمایشی (`id - 10000`).
- `from`, `to`: `string` (date) - بازه زمانی برای فیلتر تاریخ `start` و `end` چارتر.
- `origin`, `destination`: `integer` - شناسه شهر/فرودگاه مبدأ و مقصد.
- `roundtrip`: `boolean` - آیا مسیرهای دوطرفه (رفت و برگشت) نیز در نظر گرفته شوند یا خیر.
- `route`: `string` - `subtype` چارتر (مثلاً `aircraft`, `train`).
- `status`: `string` - وضعیت چارتر (`all`, `active`, `inactive`).

</div><div align="right" id="bkmrk--2"></div>---

#### <span style="font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span lang="AR-SA">خروجی</span><span dir="LTR"> (Return)</span><span lang="FA" style="font-family: 'Calibri',sans-serif; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-language: FA;">:</span>

<span dir="LTR"> </span>

<div align="right" id="bkmrk-%D8%AA%D9%88%D8%B6%DB%8C%D8%AD%D8%A7%D8%AA-%D9%86%D9%88%D8%B9-%D8%AF%D8%A7%D8%AF%D9%87-%D8%B1%D8%B4%D8%AA"></div><table border="1" class="align-center" id="bkmrk-%D8%AA%D9%88%D8%B6%DB%8C%D8%AD%D8%A7%D8%AA-%D9%86%D9%88%D8%B9-%D8%AF%D8%A7%D8%AF%D9%87-%D8%B1%D8%B4%D8%AA-1" style="border-collapse: collapse; width: 80.9524%; height: 127.734px; background-color: rgb(236, 202, 250); border: 1px inset rgb(206, 212, 217);"><colgroup><col style="width: 50.0736%;"></col><col style="width: 50.0736%;"></col></colgroup><thead><tr style="height: 30.7969px;"><td style="height: 30.7969px; border-color: rgb(206, 212, 217); background-color: rgb(132, 63, 161);"><span style="color: rgb(255, 255, 255);">**<span lang="AR-SA" style="font-family: 'B Titr';">توضیحات</span>**</span></td><td style="height: 30.7969px; border-color: rgb(206, 212, 217); background-color: rgb(132, 63, 161);"><span style="color: rgb(255, 255, 255);">**<span lang="AR-SA" style="font-family: 'B Titr';">نوع داده</span>**</span></td></tr></thead><tbody><tr style="height: 48.4688px; background-color: rgb(206, 212, 217);"><td style="height: 48.4688px; border-color: rgb(206, 212, 217); background-color: rgb(236, 202, 250);"><span style="color: rgb(0, 0, 0);">**<span lang="AR-SA"><span dir="RTL" lang="AR-SA" style="font-size: 11.0pt; line-height: 107%; font-family: 'B Nazanin'; mso-ascii-font-family: 'B Nazanin'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-hansi-font-family: 'B Nazanin'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;">یک آبجکت `JSON` حاوی دو کلید اصلی: `items` (آرایه‌ای از چارترها با فرمت `CharterResource`) و `meta` (شامل `timestamp` و اطلاعات جدول مانند `total` تعداد کل نتایج).</span></span>**</span></td><td style="height: 48.4688px; border-color: rgb(206, 212, 217); background-color: rgb(236, 202, 250);"><span lang="AR-SA" style="color: rgb(0, 0, 0);">**<span style="font-size: 11.0pt; line-height: 107%; font-family: 'B Nazanin'; mso-ascii-font-family: 'B Nazanin'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-hansi-font-family: 'B Nazanin'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;">`Illuminate\Http\JsonResponse`</span>**</span></td></tr></tbody></table>

---

#### <span style="font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;"><span style="mso-list: Ignore;">·</span></span><span lang="AR-SA"><span style="mso-spacerun: yes;"> </span></span>مثال استفاده / سناریو:

**<span style="text-decoration: underline; background-color: rgb(251, 238, 184);">سناریو ۱</span>: جستجوی پروازهای فعال تهران به مشهد در هفته آینده**

- **Request URL:** `/api/panel/v2/charter/list?advanced[type]=route&advanced[subtype]=aircraft&advanced[origin]=1&advanced[destination]=2&advanced[from]=2025-10-16&advanced[to]=2025-10-23&advanced[status]=active&paginate[length]=10`
- **Action:**

1. متد `listCharter` اجرا می‌شود.
2. کوئری اصلی به جدول `charters` اعمال می‌شود.
3. فیلتر `where('type', 'route')` و `where('subtype', 'aircraft')` اعمال می‌شود.
4. فیلتر `where('origin', 1)` و `where('destination', 2)` اعمال می‌شود.
5. فیلتر `whereBetween('start', ['2025-10-16 00:00:00', '2025-10-23 23:59:59'])` اعمال می‌شود.
6. فیلتر `whereIn('status', [1, 3])` برای وضعیت `active` اعمال می‌شود.
7. نتایج بر اساس تاریخ شروع مرتب شده و ۱۰ مورد اول بازگردانده می‌شود.

- **Response:**
- `HTTP Status`: `200 OK`
- `Body`:

<div class="code-header" dir="ltr" id="bkmrk-json"><span class="language-label">json</span></div>```
        {
            "items": [
                { "...charter object 1..." },
                { "...charter object 2..." },
                // ... up to 10 items
            ],
            "meta": {
                "timestamp": 1728994200,
                "table": {
                    "total": 54 // Total charters matching the criteria
                }
            }
        }
```