Backup #709
| ID | 709 |
| Dateipfad | /var/www/dev.campus.systemische-tools.de/src/UseCases/Task/AssignTaskUseCase.php |
| Version | 1 |
| Typ |
modified |
| Größe | 2.8 KB |
| Hash | 6cd6966d84abf345a0e1db236baca78ae29a305e3b55852466d2313a65ac885e |
| Datum | 2025-12-23 07:55:03 |
| Geändert von | claude-code-hook |
| Grund | Claude Code Pre-Hook Backup vor Edit-Operation |
| Datei existiert |
Ja
|
Dateiinhalt
<?php
namespace UseCases\Task;
use Domain\Entity\TaskAssignment;
use Domain\Entity\TaskComment;
use Domain\ValueObject\AssigneeType;
use Infrastructure\Persistence\TaskAssignmentRepository;
use Infrastructure\Persistence\TaskCommentRepository;
use Infrastructure\Persistence\TaskRepository;
class AssignTaskUseCase
{
private TaskRepository $taskRepository;
private TaskAssignmentRepository $assignmentRepository;
private TaskCommentRepository $commentRepository;
public function __construct(
?TaskRepository $taskRepository = null,
?TaskAssignmentRepository $assignmentRepository = null,
?TaskCommentRepository $commentRepository = null
) {
$this->taskRepository = $taskRepository ?? new TaskRepository();
$this->assignmentRepository = $assignmentRepository ?? new TaskAssignmentRepository();
$this->commentRepository = $commentRepository ?? new TaskCommentRepository();
}
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');
}
}
}
Vollständig herunterladen
Aktionen
Andere Versionen dieser Datei
| ID |
Version |
Typ |
Größe |
Datum |
| 826 |
2 |
modified |
2.9 KB |
2025-12-23 08:14 |
| 709 |
1 |
modified |
2.8 KB |
2025-12-23 07:55 |
← Zurück zur Übersicht