subtasks()->with('assignee')->orderBy('position')->get(); return response()->json([ 'success' => true, 'data' => SubtaskResource::collection($subtasks), 'message' => 'لیست زیروظایف', ]); } catch (\Exception $e) { return response()->json([ 'success' => false, 'message' => 'خطا در دریافت زیروظایف', ], 500); } } public function store(Request $request, Task $task): JsonResponse { try { $request->validate([ 'title' => 'required|string|max:255', 'description' => 'nullable|string', 'assignee_id' => 'nullable|exists:users,id', 'due_date' => 'nullable|date', 'position' => 'nullable|integer', ]); $data = $request->only(['title', 'description', 'assignee_id', 'due_date', 'position']); $data['task_id'] = $task->id; $data['status'] = 'todo'; $subtask = Subtask::create($data); $subtask->load('assignee'); return response()->json([ 'success' => true, 'data' => new SubtaskResource($subtask), 'message' => 'زیروظیفه ایجاد شد', ], 201); } catch (\Exception $e) { return response()->json([ 'success' => false, 'message' => 'خطا در ایجاد زیروظیفه', ], 500); } } public function update(Request $request, Subtask $subtask): JsonResponse { try { $request->validate([ 'title' => 'sometimes|required|string|max:255', 'description' => 'nullable|string', 'assignee_id' => 'nullable|exists:users,id', 'due_date' => 'nullable|date', 'position' => 'nullable|integer', ]); $subtask->update($request->only(['title', 'description', 'assignee_id', 'due_date', 'position'])); $subtask->load('assignee'); return response()->json([ 'success' => true, 'data' => new SubtaskResource($subtask->fresh()), 'message' => 'زیروظیفه به‌روزرسانی شد', ]); } catch (\Exception $e) { return response()->json([ 'success' => false, 'message' => 'خطا در به‌روزرسانی زیروظیفه', ], 500); } } public function destroy(Subtask $subtask): JsonResponse { try { $subtask->delete(); return response()->json([ 'success' => true, 'message' => 'زیروظیفه حذف شد', ]); } catch (\Exception $e) { return response()->json([ 'success' => false, 'message' => 'خطا در حذف زیروظیفه', ], 500); } } public function updateStatus(Request $request, Subtask $subtask): JsonResponse { try { $request->validate(['status' => 'required|string']); $subtask->update(['status' => $request->status]); $subtask->load('assignee'); return response()->json([ 'success' => true, 'data' => new SubtaskResource($subtask->fresh()), 'message' => 'وضعیت زیروظیفه به‌روزرسانی شد', ]); } catch (\Exception $e) { return response()->json([ 'success' => false, 'message' => 'خطا در به‌روزرسانی وضعیت', ], 500); } } }