Backup #1995
| ID | 1995 |
| Dateipfad | /var/www/dev.campus.systemische-tools.de/src/Domain/Entity/TaskAssignment.php |
| Version | 3 |
| Typ |
modified |
| Größe | 6.1 KB |
| Hash | 0b8463adf21fea2ebfc874bd66a71618e652da6097abf68471698d3e673538ec |
| Datum | 2025-12-28 13:59:16 |
| Geändert von | claude-code-hook |
| Grund | Claude Code Pre-Hook Backup vor Edit-Operation |
| Datei existiert |
Ja
|
Dateiinhalt
<?php
declare(strict_types=1);
namespace Domain\Entity;
// @responsibility: Task-Zuweisung-Entität (human/AI)
use Domain\ValueObject\AssigneeType;
class TaskAssignment
{
private ?int $id = null;
private int $taskId;
private string $assignee;
private AssigneeType $assigneeType;
private ?string $modelName = null;
private string $assignedBy;
private string $assignedByType = 'human';
private string $status = 'pending';
private \DateTimeImmutable $assignedAt;
private ?\DateTimeImmutable $acceptedAt = null;
private ?\DateTimeImmutable $completedAt = null;
private ?string $notes = null;
public function __construct()
{
$this->assignedAt = new \DateTimeImmutable();
}
// Getters
public function getId(): ?int
{
return $this->id;
}
public function getTaskId(): int
{
return $this->taskId;
}
public function getAssignee(): string
{
return $this->assignee;
}
public function getAssigneeType(): AssigneeType
{
return $this->assigneeType;
}
public function getModelName(): ?string
{
return $this->modelName;
}
public function getAssignedBy(): string
{
return $this->assignedBy;
}
public function getAssignedByType(): string
{
return $this->assignedByType;
}
public function getStatus(): string
{
return $this->status;
}
public function getAssignedAt(): \DateTimeImmutable
{
return $this->assignedAt;
}
public function getAcceptedAt(): ?\DateTimeImmutable
{
return $this->acceptedAt;
}
public function getCompletedAt(): ?\DateTimeImmutable
{
return $this->completedAt;
}
public function getNotes(): ?string
{
return $this->notes;
}
// Setters
public function setId(int $id): self
{
$this->id = $id;
return $this;
}
public function setTaskId(int $taskId): self
{
$this->taskId = $taskId;
return $this;
}
public function setAssignee(string $assignee): self
{
$this->assignee = $assignee;
return $this;
}
public function setAssigneeType(AssigneeType $assigneeType): self
{
$this->assigneeType = $assigneeType;
$this->modelName = $assigneeType->defaultModel();
return $this;
}
public function setModelName(?string $modelName): self
{
$this->modelName = $modelName;
return $this;
}
public function setAssignedBy(string $assignedBy): self
{
$this->assignedBy = $assignedBy;
return $this;
}
public function setAssignedByType(string $assignedByType): self
{
$this->assignedByType = $assignedByType;
return $this;
}
public function setStatus(string $status): self
{
$this->status = $status;
return $this;
}
public function setAcceptedAt(?\DateTimeImmutable $acceptedAt): self
{
$this->acceptedAt = $acceptedAt;
return $this;
}
public function setCompletedAt(?\DateTimeImmutable $completedAt): self
{
$this->completedAt = $completedAt;
return $this;
}
public function setNotes(?string $notes): self
{
$this->notes = $notes;
return $this;
}
public function accept(): self
{
$this->status = 'accepted';
$this->acceptedAt = new \DateTimeImmutable();
return $this;
}
public function start(): self
{
$this->status = 'in_progress';
return $this;
}
public function complete(): self
{
$this->status = 'completed';
$this->completedAt = new \DateTimeImmutable();
return $this;
}
public function reject(): self
{
$this->status = 'rejected';
return $this;
}
public function toArray(): array
{
return [
'id' => $this->id,
'task_id' => $this->taskId,
'assignee' => $this->assignee,
'assignee_type' => $this->assigneeType->value,
'model_name' => $this->modelName,
'assigned_by' => $this->assignedBy,
'assigned_by_type' => $this->assignedByType,
'status' => $this->status,
'assigned_at' => $this->assignedAt->format('Y-m-d H:i:s.u'),
'accepted_at' => $this->acceptedAt?->format('Y-m-d H:i:s.u'),
'completed_at' => $this->completedAt?->format('Y-m-d H:i:s.u'),
'notes' => $this->notes,
];
}
public static function fromArray(array $data): self
{
$assignment = new self();
if (isset($data['id'])) {
$assignment->setId((int) $data['id']);
}
if (isset($data['task_id'])) {
$assignment->setTaskId((int) $data['task_id']);
}
if (isset($data['assignee'])) {
$assignment->setAssignee($data['assignee']);
}
if (isset($data['assignee_type'])) {
$assignment->assigneeType = AssigneeType::from($data['assignee_type']);
}
if (isset($data['model_name'])) {
$assignment->setModelName($data['model_name']);
}
if (isset($data['assigned_by'])) {
$assignment->setAssignedBy($data['assigned_by']);
}
if (isset($data['assigned_by_type'])) {
$assignment->setAssignedByType($data['assigned_by_type']);
}
if (isset($data['status'])) {
$assignment->setStatus($data['status']);
}
if (isset($data['assigned_at'])) {
$assignment->setAssignedAt(new \DateTimeImmutable($data['assigned_at']));
}
if (isset($data['accepted_at'])) {
$assignment->setAcceptedAt(new \DateTimeImmutable($data['accepted_at']));
}
if (isset($data['completed_at'])) {
$assignment->setCompletedAt(new \DateTimeImmutable($data['completed_at']));
}
if (isset($data['notes'])) {
$assignment->setNotes($data['notes']);
}
return $assignment;
}
}
Vollständig herunterladen
Aktionen
Andere Versionen dieser Datei
| ID |
Version |
Typ |
Größe |
Datum |
| 1995 |
3 |
modified |
6.1 KB |
2025-12-28 13:59 |
| 1994 |
2 |
modified |
6.2 KB |
2025-12-28 13:58 |
| 809 |
1 |
modified |
6.1 KB |
2025-12-23 08:07 |
← Zurück zur Übersicht