setName($request->name); if ($request->categoryId !== null) { $category = $this->categoryRepository->find($request->categoryId); $task->setCategory($category); } if ($request->date !== null) { $task->setDate(new \DateTime($request->date)); } $this->em->persist($task); $this->em->flush(); return $task; } public function updateTask(Task $task, UpdateTaskRequest $request): Task { $task->setName($request->name); $category = $request->categoryId !== null ? $this->categoryRepository->find($request->categoryId) : null; $task->setCategory($category); $status = TaskStatus::tryFrom($request->status); if ($status !== null) { $task->setStatus($status); } $task->setDate($request->date ? new \DateTime($request->date) : null); $this->em->flush(); return $task; } public function toggleTask(Task $task): Task { $newStatus = $task->getStatus() === TaskStatus::Active ? TaskStatus::Done : TaskStatus::Active; $task->setStatus($newStatus); $this->em->flush(); return $task; } public function deleteTask(Task $task): void { $this->em->remove($task); $this->em->flush(); } }