Skip to main content
#P1556

POST /api/v2/tasks/category/operation

Route Info

Method Endpoint ControllerMiddleware
POST /api/v2/tasks/category/operation OfficialController@operationTasksCategory authWithJwt

منطق دقیقشرح عملکرد (Code Logic)Functionality)

این متد عملیاتمدیریت CRUDکامل (CRUD) دسته‌بندی‌های تسک را بهبر صورتعهده تجمیعیدارد و با استفاده از Query Builder (نه Eloquent Model) مدیریت می‌کند. مراحل اجرا به ترتیب:

  1. استخراج داده‌ها: متغیر data$ از ورودی request->data$ پر می‌شود (نکته: اگر این پارامتر ارسال نشود، در خطوط بعدی ارور PHP دریافت خواهید کرد).
  2. بررسی Action: بر اساس مقدار فیلدپارامتر action یکیرفتار ازمتفاوتی سهنشان بلوکمی‌دهد:

    زیر اجرا می‌شود:
    • store:عملیات Store (ایجاد):
      • یک رکورد جدید در جدول tasks_categories درجایجاد می‌شود.می‌کند.
      • فیلد branch از ریکوئست، user ازبا شناسه اپراتور لاگین شده،جاری و فیلد title/color/iconbranch با شناسه شعبه جاری پر می‌شود.
      • اطلاعات ظاهری (عنوان، رنگ، آیکون) از آرایه data خواندهدریافت می‌شوند.
      • شناسه رکورد درج شده (Insert ID) گرفته می‌شود اما در خروجی برگردانده نمی‌می‌شود.
    • update:عملیات Update (ویرایش):
      • رکورد مربوط به id ارسالی را در جدول tasks_categories کهپیدا کرده و فیلدهای idtitle، color آن برابر باو request->id$icon استرا آپدیتبه‌روزرسانی می‌شود.
      • هیچ شرط دیگری (مثل بررسی شعبه) در کوئری وجود ندارد.می‌کند.
    • delete:عملیات Delete (حذف کامل و آبشاری):
      • ابتدا رکوردخود اصلیدسته‌بندی را از جدول tasks_categories حذف می‌شود.می‌کند.
      • سپس تمام idتسک‌های زیرمجموعه این دسته‌بندی را از جدول tasks_items که مربوط به این دسته هستند (where('category', $request->id)) استخراج می‌شوند.
      • سپس تمام رکوردهای tasks_items مربوطه حذف می‌شوند.می‌کند.
      • در نهایتنهایت، تمامتمامی رکوردهاییادداشت‌ها (Notes) مرتبط با آن تسک‌های حذف شده را نیز از جدول tasks_notes کهپاک مربوطمی‌کند بهتا تسک‌هایدیتای استخراج شده هستند حذف می‌شوندیتیم (حذفOrphan دستیData) ارتباطات).باقی نماند.
  3. پاسخ: در صورت موفقیت آرایه‌ای شامل وضعیت و زمان سرور برمی‌گرداند.

ساختارپارامترهای ورودی مورد(Input انتظارParameters)

سیستم

انتظار
داردورودی‌هادقیقاًبهشکلارسالشوند(درغیراینصورتواردبلوک میدل‌ورستمی‌شود)
نام اینپارامتر نوع الزامی؟ توضیحات
action Stringبلهنوع عملیات: catchstore, update, delete.
idIntegerشرطیبرای update می‌شود):

و
POST /api/v2/tasks/category/operation
Authorization: Bearer <JWT>

{
  "action": "store",      // الزامی: store | update | delete
  "id": 10,               // الزامی است.
dataArrayشرطیبرای updatestore و delete "branch": 1001, //update الزامی (معمولااست. توسطحاوی کلاینتاطلاعات یادسته‌بندی.
"data"

ساختار آرایه data:

{               // الزامی (حتی برای delete باید ارسال شود وگرنه کد کرش می‌کند)
    "title": "جلسات"عنوان دسته‌بندی",    // الزامی برای store و update
    "color": "#ffffff"#FF0000",  // الزامیکد برایرنگ store و updateHEX
    "icon": "fa-user"list"    // الزامیکلاس برایآیکون store(مثلاً و update
  }FontAwesome)
}

نمونه خروجی واقعی(Response)

در صورت موفقیت آمیز:عملیات:

{
    "status": true,
    "time": 17320370001732615200
}

در صورت بروز خطا (Exception):
شامل متن دقیق خطای PHP و Stack Trace کامل برای دیباگ.

{
    "status": false,
    "time": 1732037005,1732615200,
    "message": "TryingError tomessage access array offset on value of type null"description", // مثال اگر data ارسال نشود
    "trace": [ ... ]
}

عملیات دیتابیس (Direct DB Manipulation)

این متد مستقیماً با جداول زیر درگیر است:

  • tasks_categories (Insert, Update, Delete)
  • tasks_items (Select, Delete)
  • tasks_notes (Delete)

نکات فنی و خطاهای محتمل

  • وابستگی به آرایه data: در خط اول متد $data = $request->data اجرا می‌شود. اگر کلاینت پارامتر data را نفرستد، کد متوقف نمی‌شود اما در خطوط بعدی (مثلا $data['title']) خطا می‌دهد.
  • حذف بدون Transaction: عملیات حذف در ۳ مرحله انجام می‌شود. اگر در مرحله حذف tasks_items خطایی رخ دهد، دسته‌بندی حذف شده اما نوت‌ها باقی می‌مانند (Partial Delete Risk).
  • عدم بررسی مالکیت (Ownership): کوئری‌های Update و Delete فقط id را چک می‌کنند. این یعنی کد اجازه می‌دهد دسته‌بندی متعلق به یک شعبه دیگر، توسط کاربری در شعبه متفاوت ویرایش شود (صرفاً با داشتن ID).