# GET /api/v2/support/tickets

<div id="bkmrk-" style="direction: rtl; font-family: Vazir,Tahoma; text-align: justify; line-height: 1.85;"></div>### Route Info

<div id="bkmrk-method-endpoint-cont" style="direction: rtl; font-family: Vazir,Tahoma; text-align: justify; line-height: 1.85;"><div><table border="1" style="width: 100%; margin: auto; border-collapse: collapse; text-align: center; border: 1px solid #ddd;"><tbody><tr style="background: #f4f4f4; font-weight: bold;"><td style="padding: 10px;">Method</td><td style="padding: 10px;">Endpoint</td><td style="padding: 10px;">Controller</td></tr><tr><td style="direction: ltr; padding: 10px;">GET</td><td style="direction: ltr; padding: 10px;">/api/v2/support/tickets</td><td style="direction: ltr; padding: 10px;">OfficialController@indexTicketsSupport</td></tr></tbody></table>

</div></div>### شرح عملکرد (Functionality)

این متد لیست تیکت‌های پشتیبانی را بر اساس نقش کاربر (درخواست‌کننده یا پاسخ‌دهنده) مدیریت می‌کند. نکات کلیدی منطق آن عبارتند از:

<div id="bkmrk-%D8%AF%D8%A7%D9%85%D9%86%D9%87-%D9%86%D9%85%D8%A7%DB%8C%D8%B4-%28scope%29%3A" style="direction: rtl; font-family: Vazir,Tahoma; text-align: justify; line-height: 1.85;">- **دامنه نمایش (Scope):** بر اساس فیلتر `ticket_scope`، تیکت‌ها در سه حالت قابل دریافت هستند: 
    - `sent`: تیکت‌هایی که کاربر جاری ایجاد کرده است (`requester = operatorId`). نوع این تیکت‌ها در خروجی `send` درج می‌شود.
    - `inbox`: تیکت‌هایی که به دپارتمانی ارجاع شده که کاربر جاری عضو آن است (بررسی عضویت با `JSON_CONTAINS` روی ستون `members` دپارتمان). نوع این تیکت‌ها در خروجی `receive` درج می‌شود.
    - `all`: ادغام هر دو حالت بالا.
- **شمارنده پیام‌های خوانده نشده (Unread Counter):** برای هر تیکت، تعداد یادداشت‌هایی که خوانده نشده‌اند (`read\_by` نال است) و توسط کاربر جاری نوشته نشده‌اند، شمرده می‌شود. شرط اضافی `NOT JSON_CONTAINS` بررسی می‌کند که نویسنده پیام جزو اعضای دپارتمان نباشد (برای تشخیص سمت مقابل مکالمه).
- **آمار کلی (Waiting):** در بخش `payload`، تعداد کل تیکت‌های باز (`status = 1`) که به نحوی به کاربر مربوط می‌شوند، برگردانده می‌شود.
- **اطلاعات کاربر:** فیلدهای `requester` و `operator` با استفاده از متد `StaticController::getOperators` هیدراته شده و چون از ایندکس `[0]` استفاده شده، به صورت آبجکت برگردانده می‌شوند.

</div>### پارامترهای ورودی (Input Parameters)

<div id="bkmrk-%D9%86%D8%A7%D9%85-%D9%BE%D8%A7%D8%B1%D8%A7%D9%85%D8%AA%D8%B1-%D9%86%D9%88%D8%B9-%D8%A7%D9%84%D8%B2%D8%A7" style="direction: rtl; font-family: Vazir,Tahoma; text-align: justify; line-height: 1.85;"><div><table border="1" style="width: 100%; border-collapse: collapse; text-align: right;"><thead><tr style="background: #f4f4f4;"><th style="padding: 8px;">نام پارامتر</th><th style="padding: 8px;">نوع</th><th style="padding: 8px;">الزامی؟</th><th style="padding: 8px;">توضیحات</th></tr></thead><tbody><tr><td style="direction: ltr;">search\[length\]</td><td>Integer</td><td>خیر</td><td>تعداد رکورد در هر صفحه (پیش‌فرض: 20).</td></tr><tr><td style="direction: ltr;">search\[current\]</td><td>Integer</td><td>خیر</td><td>شماره صفحه جاری (پیش‌فرض: 1).</td></tr><tr><td style="direction: ltr;">filters\[ticket\_scope\]</td><td>String</td><td>خیر</td><td>دامنه جستجو: `all` (پیش‌فرض)، `sent`، یا `inbox`.</td></tr><tr><td style="direction: ltr;">filters\[status\]</td><td>Integer</td><td>خیر</td><td>فیلتر بر اساس وضعیت دپارتمان (پیش‌فرض: 1).</td></tr><tr><td style="direction: ltr;">filters\[score\]</td><td>Integer</td><td>خیر</td><td>فیلتر بر اساس امتیاز تیکت.</td></tr><tr><td style="direction: ltr;">filters\[department\]</td><td>Integer</td><td>خیر</td><td>فیلتر بر اساس شناسه دپارتمان.</td></tr><tr><td style="direction: ltr;">filters\[operator\]</td><td>Integer</td><td>خیر</td><td>فیلتر بر اساس شناسه اپراتور پاسخ‌دهنده (فقط در حالت inbox و all تأثیر دارد).</td></tr></tbody></table>

</div></div>### نمونه خروجی (Response)

```
{
    "items": [
        {
            "id": 505,
            "type": "send", // تیکت ارسال شده توسط کاربر
            "department": {
                "id": 3,
                "title": {
                    "fa": "پشتیبانی فنی",
                    "en": "Technical Support"
                }
            },
            "requester": { // اطلاعات کامل کاربر درخواست دهنده
                "id": 10,
                "text": "1001 - نام کاربر",
                "query": { ... }
            },
            "operator": false, // هنوز اپراتوری پاسخ نداده
            "score": 0,
            "status": 1,
            "unread": 1, // تعداد پیام‌های جدید
            "created_at": "2024-11-20 14:00:00"
        },
        {
            "id": 498,
            "type": "receive", // تیکت دریافتی (کاربر عضو دپارتمان است)
            "department": {
                "id": 2,
                "title": {
                    "fa": "امور مالی",
                    "en": "Finance"
                }
            },
            "requester": {
                "id": 55,
                "text": "1055 - مشتری نمونه",
                "query": { ... }
            },
            "operator": { // اپراتوری که تیکت را هندل می‌کند
                "id": 10,
                "text": "1001 - نام کاربر",
                "query": { ... }
            },
            "score": 5,
            "status": 2,
            "unread": 0,
            "created_at": "2024-11-18 09:30:00"
        }
    ],
    "payload": {
        "wating": 5 // تعداد کل تیکت‌های باز مرتبط
    },
    "meta": {
        "total_records": 25,
        "total_pages": 2,
        "current_page": 1,
        "per_page": 20,
        "last_page": 2,
        "next_page": 2,
        "prev_page": 0,
        "from": 1,
        "to": 20,
        "timestamp": 1732620000
    }
}
```