Skip to main content
#P1565

GET /api/v2/support/tickets

Route Info

Method Endpoint Controller
GET /api/v2/support/tickets OfficialController@indexTicketsSupport

شرح عملکرد (Functionality)

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

  • دامنه نمایش (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] استفاده شده، به صورت آبجکت برگردانده می‌شوند.

پارامترهای ورودی (Input Parameters)

نام پارامتر نوع الزامی؟ توضیحات
search[length] Integer خیر تعداد رکورد در هر صفحه (پیش‌فرض: 20).
search[current] Integer خیر شماره صفحه جاری (پیش‌فرض: 1).
filters[ticket_scope] String خیر دامنه جستجو: all (پیش‌فرض)، sent، یا inbox.
filters[status] Integer خیر فیلتر بر اساس وضعیت دپارتمان (پیش‌فرض: 1).
filters[score] Integer خیر فیلتر بر اساس امتیاز تیکت.
filters[department] Integer خیر فیلتر بر اساس شناسه دپارتمان.
filters[operator] Integer خیر فیلتر بر اساس شناسه اپراتور پاسخ‌دهنده (فقط در حالت inbox و all تأثیر دارد).

نمونه خروجی (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
    }
}