#P1557
GET /api/v2/tasks/categories/list
Route Info
| Method | Endpoint | Controller |
| GET | /api/v2/tasks/categories/list | OfficialController@listTasksCategories |
شرح عملکرد (Functionality)
این متد لیست دستهبندیهای تسک را در دو گروه مجزا ("my" و "other") واکشی میکند. منطق تفکیک و پردازش دادهها به شرح زیر است:
- بخش "My Categories" (دستهبندیهای من):
- تمامی رکوردهایی از جدول
tasks_categoriesانتخاب میشوند که فیلدuserآنها برابر با شناسه اپراتور جاری باشد. - تعداد تسکهای فعال (status=1) در هر دستهبندی شمارش میشود.
- اگر پارامتر
tasksدر درخواست ارسال شده باشد، متدgetTasksبا آرگومانownفراخوانی شده و لیست تسکهای زیرمجموعه نیز بارگذاری میشود.
- تمامی رکوردهایی از جدول
- بخش "Other Categories" (سایر دستهبندیهای مرتبط):
- دستهبندیهایی را پیدا میکند که اپراتور جاری سازنده آنها نیست، اما در تسکهای زیرمجموعه آنها (
tasks_items) به عنوان مسئول (Operator) تعیین شده است. - از دستور
JSON_CONTAINSروی فیلدoperatorsدر جدولtasks_itemsبرای یافتن مشارکت اپراتور استفاده میشود. - اگر پارامتر
tasksارسال شود، متدgetTasksبا آرگومانotherفراخوانی میشود تا فقط تسکهای مرتبط با کاربر را برگرداند.
- دستهبندیهایی را پیدا میکند که اپراتور جاری سازنده آنها نیست، اما در تسکهای زیرمجموعه آنها (
- Hydration دادهها (User & Operators):
- برای نمایش اطلاعات کاربر سازنده (
user)، از متد استاتیکStaticController::getOperatorsاستفاده میشود. از آنجا که این متد آرایه برمیگرداند، در خروجی این کنترلر مستقیماً ایندکس[0]آن استخراج و در فیلدuserقرار میگیرد. - در بخش تسکها (اگر لود شوند)، فیلد
operatorsحاوی آرایهای کامل از خروجیgetOperatorsاست.
- برای نمایش اطلاعات کاربر سازنده (
پارامترهای ورودی (Input Parameters)
| نام پارامتر | نوع | الزامی؟ | توضیحات |
|---|---|---|---|
| branch | Integer | بله | شناسه شعبه فعال (معمولاً از طریق میدلور تزریق میشود). |
| tasks | Boolean/Int | خیر | اگر مقدار داشته باشد (مثلاً 1)، لیست تسکهای هر دستهبندی نیز در خروجی (tasks) بارگذاری میشود (Eager Loading دستی). |
نمونه خروجی (Response)
نکته مهم در مورد ساختار دادهها: فیلد user در آبجکت دستهبندی، یک آبجکت تکی است (چون ایندکس 0 دریافت میشود)، اما فیلد operators در داخل تسکها، یک آرایه از آبجکتهاست.
{
"status": true,
"time": 1732615000,
"data": {
"my": [
{
"id": 5,
"user": {
"id": 10,
"text": "1001 - نام نامخانوادگی",
"query": {
"id": 10,
"sex": "male",
"first_name": "نام",
"last_name": "نامخانوادگی",
"telegram": "username",
"group": "support",
"avatar": "path/to/img.jpg",
"position": "manager",
"personnel_id": 1001
}
},
"title": "توسعه فنی",
"color": "#FF5733",
"icon": "fa-code",
"status": 1,
"created": "2024-01-01T12:00:00.000000Z",
"counter": 3,
"tasks": [ // فقط اگر tasks=1 ارسال شده باشد پر میشود
{
"id": 101,
"user": { ... }, // آبجکت سازنده تسک (مشابه ساختار user بالا)
"category": {
"id": 5,
"title": "توسعه فنی"
},
"title": "بررسی باگ لاگین",
"connection": false, // یا آبجکت کانکشن اگر وجود داشته باشد
"priority": 1,
"order": 0,
"description": "توضیحات تسک...",
"deadline": "1403-10-20",
"operators": [ // آرایه اپراتورهای مسئول
{
"id": 12,
"text": "1002 - همکار فنی",
"query": { ... }
}
],
"status": 1,
"created": "2024-11-01T10:00:00.000000Z"
}
]
}
],
"other": [
{
"id": 8,
"user": { ... }, // کاربری که دستهبندی را ساخته (نه کاربر جاری)
"title": "امور مالی",
"color": "#33FF57",
"icon": "fa-money",
"status": 1,
"created": "2024-02-15T14:30:00.000000Z",
"counter": 1, // تعداد تسکهایی که من در آنها مشارکت دارم
"tasks": false // اگر tasks ارسال نشود، false برمیگردد
}
]
}
}