taskRepository = $taskRepository; } public function index(Request $request) { $user = Auth::user(); $filters = [ 'is_done' => $request->is_done, 'per_page' => $request->per_page ?? 10, ]; // admin bisa lihat semua task if ($user->role !== 'admin') { $filters['user_id'] = $user->id; } return TaskResource::collection( $this->taskRepository->getTasks($filters) ); } public function store(TaskRequest $request) { $task = $this->taskRepository->store([ 'user_id' => Auth::id(), 'title' => $request->title, 'description' => $request->description ]); return response()->json([ 'message' => 'Task berhasil dibuat!', 'task' => new TaskResource($task) ], 201); } public function update(TaskRequest $request, $id) { $task = Task::find($id); if (!$task) { return response()->json(['message' => 'Task tidak ditemukan!'], 404); } if ($task->user_id !== Auth::id()) { return response()->json(['message' => 'Forbidden!'], 403); } $task = $this->taskRepository->update($task, [ 'title' => $request->title ?? $task->title, 'description' => $request->description ?? $task->description, 'is_done' => $request->is_done ?? $task->is_done, 'status' => $request->status ?? $request->status, 'due_date' => $request->due_date ?? $request->due_date ]); return response()->json([ 'message' => 'Task berhasil diupdate!', 'task' => new TaskResource($task) ]); } public function destroy($id) { $task = Task::find($id); if (!$task) { return response()->json(['message' => 'Task tidak ditemukan!'], 404); } if ($task->user_id !== Auth::id()) { return response()->json(['message' => 'Forbidden!'], 403); } $task->delete(); return response()->json([ 'message' => 'Task berhasil dihapus!' ]); } }