#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
}
}