Backup #829

ID829
Dateipfad/var/www/dev.campus.systemische-tools.de/src/UseCases/Task/GetTasksUseCase.php
Version2
Typ modified
Größe2.2 KB
Hashed1b1a2d3086b285e500cc8216247e13a1274d977b2badd74bd7e0745afda7f4
Datum2025-12-23 08:15:36
Geändert vonclaude-code-hook
GrundClaude Code Pre-Hook Backup vor Edit-Operation
Datei existiert Ja

Dateiinhalt

<?php

declare(strict_types=1);

namespace UseCases\Task;

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

use Domain\Entity\Task;
use Infrastructure\Persistence\TaskAssignmentRepository;
use Infrastructure\Persistence\TaskRepository;
use Infrastructure\Persistence\TaskResultRepository;

class GetTasksUseCase
{
    private TaskRepository $taskRepository;
    private TaskAssignmentRepository $assignmentRepository;
    private TaskResultRepository $resultRepository;

    public function __construct(
        ?TaskRepository $taskRepository = null,
        ?TaskAssignmentRepository $assignmentRepository = null,
        ?TaskResultRepository $resultRepository = null
    ) {
        $this->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);
    }
}

Vollständig herunterladen

Aktionen

Herunterladen

Andere Versionen dieser Datei

ID Version Typ Größe Datum
829 2 modified 2.2 KB 2025-12-23 08:15
706 1 modified 2.1 KB 2025-12-23 07:54

← Zurück zur Übersicht