Skip to main content
#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 برمی‌گردد
            }
        ]
    }
}