AssignTaskUseCase.php
- Pfad:
src/UseCases/Task/AssignTaskUseCase.php - Namespace: UseCases\Task
- Zeilen: 83 | Größe: 2,542 Bytes
- Geändert: 2025-12-23 08:49:24 | Gescannt: 2025-12-31 10:22:15
Code Hygiene Score: 98
- Dependencies: 90 (25%)
- LOC: 100 (20%)
- Methods: 100 (20%)
- Secrets: 100 (15%)
- Classes: 100 (10%)
- Magic Numbers: 100 (10%)
Keine Issues gefunden.
Dependencies 9
- constructor Domain\Repository\TaskRepositoryInterface
- constructor Infrastructure\Persistence\TaskAssignmentRepository
- constructor Infrastructure\Persistence\TaskCommentRepository
- use Domain\Entity\TaskAssignment
- use Domain\Entity\TaskComment
- use Domain\Repository\TaskRepositoryInterface
- use Domain\ValueObject\AssigneeType
- use Infrastructure\Persistence\TaskAssignmentRepository
- use Infrastructure\Persistence\TaskCommentRepository
Klassen 1
-
AssignTaskUseCaseclass Zeile 16
Funktionen 3
-
__construct()public Zeile 18 -
execute()public Zeile 25 -
validate()Zeile 66
Verwendet von 2
- TaskController.php constructor
- TaskController.php use
Versionen 2
-
v2
2025-12-23 08:14 | claude-code-hook | modified
Claude Code Pre-Hook Backup vor Edit-Operation -
v1
2025-12-23 07:55 | claude-code-hook | modified
Claude Code Pre-Hook Backup vor Edit-Operation
Code
<?php
declare(strict_types=1);
namespace UseCases\Task;
// @responsibility: Weist Tasks an Personen oder KI-Modelle zu
use Domain\Entity\TaskAssignment;
use Domain\Entity\TaskComment;
use Domain\Repository\TaskRepositoryInterface;
use Domain\ValueObject\AssigneeType;
use Infrastructure\Persistence\TaskAssignmentRepository;
use Infrastructure\Persistence\TaskCommentRepository;
class AssignTaskUseCase
{
public function __construct(
private TaskRepositoryInterface $taskRepository,
private TaskAssignmentRepository $assignmentRepository,
private TaskCommentRepository $commentRepository
) {
}
public function execute(int $taskId, array $data): TaskAssignment
{
$this->validate($data);
$task = $this->taskRepository->find($taskId);
if ($task === null) {
throw new \InvalidArgumentException("Task {$taskId} not found");
}
$assigneeType = AssigneeType::from($data['assignee_type']);
$assignment = new TaskAssignment();
$assignment->setTaskId($taskId);
$assignment->setAssignee($data['assignee']);
$assignment->setAssigneeType($assigneeType);
$assignment->setAssignedBy($data['assigned_by'] ?? 'system');
$assignment->setAssignedByType($data['assigned_by_type'] ?? 'human');
if (isset($data['model_name'])) {
$assignment->setModelName($data['model_name']);
}
if (isset($data['notes'])) {
$assignment->setNotes($data['notes']);
}
$id = $this->assignmentRepository->save($assignment);
$assignment->setId($id);
$comment = TaskComment::createAssignmentNote(
$taskId,
$assignment->getAssignedBy(),
$assignment->getAssignedByType(),
$assignment->getAssignee(),
$assigneeType->label()
);
$this->commentRepository->save($comment);
return $assignment;
}
private function validate(array $data): void
{
if (!isset($data['assignee']) || $data['assignee'] === '') {
throw new \InvalidArgumentException('Assignee is required');
}
if (!isset($data['assignee_type']) || $data['assignee_type'] === '') {
throw new \InvalidArgumentException('Assignee type is required');
}
try {
AssigneeType::from($data['assignee_type']);
} catch (\ValueError $e) {
throw new \InvalidArgumentException('Invalid assignee type');
}
}
}