#P1556
POST /api/v2/tasks/category/operation
Route Info
| Method | Endpoint | Controller | Middleware |
| POST | /api/v2/tasks/category/operation | OfficialController@operationTasksCategory | authWithJwt |
منطق دقیق عملکرد (Code Logic)
این متد عملیات CRUD را به صورت تجمیعی و با استفاده از Query Builder (نه Eloquent Model) مدیریت میکند. مراحل اجرا به ترتیب:
- استخراج دادهها: متغیر
data$از ورودیrequest->data$پر میشود (نکته: اگر این پارامتر ارسال نشود، در خطوط بعدی ارور PHP دریافت خواهید کرد). - بررسی Action: بر اساس مقدار فیلد
actionیکی از سه بلوک زیر اجرا میشود:- store:
- یک رکورد در جدول
tasks_categoriesدرج میشود. - فیلد
branchاز ریکوئست،userاز شناسه اپراتور لاگین شده، وtitle/color/iconاز آرایهdataخوانده میشوند. - شناسه رکورد درج شده (Insert ID) گرفته میشود اما در خروجی برگردانده نمیشود.
- یک رکورد در جدول
- update:
- رکورد جدول
tasks_categoriesکهidآن برابر باrequest->id$است آپدیت میشود. - هیچ شرط دیگری (مثل بررسی شعبه) در کوئری وجود ندارد.
- رکورد جدول
- delete:
- ابتدا رکورد اصلی از جدول
tasks_categoriesحذف میشود. - سپس تمام
idهای جدولtasks_itemsکه مربوط به این دسته هستند (where('category', $request->id)) استخراج میشوند. - سپس تمام رکوردهای
tasks_itemsمربوطه حذف میشوند. - در نهایت تمام رکوردهای جدول
tasks_notesکه مربوط به تسکهای استخراج شده هستند حذف میشوند (حذف دستی ارتباطات).
- ابتدا رکورد اصلی از جدول
- store:
- پاسخ: در صورت موفقیت آرایهای شامل وضعیت و زمان سرور برمیگرداند.
ساختار ورودی مورد انتظار
سیستم انتظار دارد ورودیها دقیقاً به این شکل ارسال شوند (در غیر این صورت وارد بلوک catch میشود):
POST /api/v2/tasks/category/operation
Authorization: Bearer <JWT>
{
"action": "store", // الزامی: store | update | delete
"id": 10, // الزامی برای update و delete
"branch": 1001, // الزامی (معمولا توسط کلاینت یا میدلور ست میشود)
"data": { // الزامی (حتی برای delete باید ارسال شود وگرنه کد کرش میکند)
"title": "جلسات", // الزامی برای store و update
"color": "#ffffff", // الزامی برای store و update
"icon": "fa-user" // الزامی برای store و update
}
}
خروجی واقعی
موفقیت آمیز:
{
"status": true,
"time": 1732037000
}
در صورت بروز خطا (Exception):
شامل متن دقیق خطای PHP و Stack Trace کامل برای دیباگ.
{
"status": false,
"time": 1732037005,
"message": "Trying to access array offset on value of type null", // مثال اگر 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).