taskRepository = $taskRepository ?? new TaskRepository(); $this->assignmentRepository = $assignmentRepository ?? new TaskAssignmentRepository(); $this->resultRepository = $resultRepository ?? new TaskResultRepository(); } 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); } }