GetTasksUseCase.php

Code Hygiene Score: 100

Keine Issues gefunden.

Dependencies 7

Klassen 1

Funktionen 7

Verwendet von 2

Versionen 2

Code

<?php

declare(strict_types=1);

namespace UseCases\Task;

// @responsibility: Liest Tasks mit Filtern, Details und Statistiken

use Domain\Entity\Task;
use Domain\Repository\TaskRepositoryInterface;
use Infrastructure\Persistence\TaskAssignmentRepository;
use Infrastructure\Persistence\TaskResultRepository;

class GetTasksUseCase
{
    public function __construct(
        private TaskRepositoryInterface $taskRepository,
        private TaskAssignmentRepository $assignmentRepository,
        private TaskResultRepository $resultRepository
    ) {
    }

    public function execute(array $filters = [], int $limit = 50, int $offset = 0): array
    {
        return $this->taskRepository->findAll($filters, $limit, $offset);
    }

    public function findById(int $id): ?Task
    {
        return $this->taskRepository->find($id);
    }

    public function findByUuid(string $uuid): ?Task
    {
        return $this->taskRepository->findByUuid($uuid);
    }

    public function getTaskWithDetails(int $id): ?array
    {
        $task = $this->taskRepository->find($id);

        if ($task === null) {
            return null;
        }

        $assignments = $this->assignmentRepository->findByTaskId($id);
        $results = $this->resultRepository->findByTaskId($id);
        $subtasks = $this->taskRepository->findSubtasks($id);

        return [
            'task' => $task->toArray(),
            'assignments' => array_map(fn ($a) => $a->toArray(), $assignments),
            'results' => array_map(fn ($r) => $r->toArray(), $results),
            'subtasks' => array_map(fn ($t) => $t->toArray(), $subtasks),
        ];
    }

    public function getStatistics(): array
    {
        return $this->taskRepository->getStatistics();
    }

    public function count(array $filters = []): int
    {
        return $this->taskRepository->count($filters);
    }
}
← Übersicht Graph