Task module

This commit is contained in:
Marek Lenczewski
2026-04-12 10:06:17 +02:00
parent efe0cfe361
commit 27b34eb90f
39 changed files with 2454 additions and 41 deletions

View File

@@ -0,0 +1,61 @@
<?php
namespace App\Service;
use App\DTO\TaskRequest;
use App\Entity\Task;
use App\Enum\TaskStatus;
use Doctrine\ORM\EntityManagerInterface;
class TaskManager
{
public function __construct(private EntityManagerInterface $em)
{
}
public function create(TaskRequest $req): Task
{
$task = new Task();
$task->setName($req->name);
$task->setDate($req->date);
$task->setStatus($req->status);
$this->em->persist($task);
$this->em->flush();
return $task;
}
public function update(Task $task, TaskRequest $req): Task
{
$task->setName($req->name);
$task->setDate($req->date);
$task->setStatus($req->status);
$this->em->flush();
return $task;
}
public function delete(Task $task): void
{
$this->em->remove($task);
$this->em->flush();
}
public function toggle(Task $task): Task
{
$new = match ($task->getRawStatus()) {
TaskStatus::Active => TaskStatus::Done,
TaskStatus::Done => TaskStatus::Active,
TaskStatus::Inactive => TaskStatus::Inactive,
TaskStatus::Past => TaskStatus::Past,
};
$task->setStatus($new);
$this->em->flush();
return $task;
}
}