{
"event": "PreToolUse",
"tool_name": "Edit",
"tool_input": {
"file_path": "\/var\/www\/dev.campus.systemische-tools.de\/src\/Domain\/Entity\/TaskComment.php",
"old_string": "<?php\n\nnamespace Domain\\Entity;\n\nclass TaskComment",
"new_string": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Domain\\Entity;\n\n\/\/ @responsibility: Task-Kommentar-Entität\n\nclass TaskComment"
}
}
{
"tool_response": {
"filePath": "\/var\/www\/dev.campus.systemische-tools.de\/src\/Domain\/Entity\/TaskComment.php",
"oldString": "<?php\n\nnamespace Domain\\Entity;\n\nclass TaskComment",
"newString": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Domain\\Entity;\n\n\/\/ @responsibility: Task-Kommentar-Entität\n\nclass TaskComment",
"originalFile": "<?php\n\nnamespace Domain\\Entity;\n\nclass TaskComment\n{\n private ?int $id = null;\n private int $taskId;\n private string $author;\n private string $authorType = 'human';\n private string $commentType = 'comment';\n private string $content;\n private array $metadata = [];\n private \\DateTimeImmutable $createdAt;\n\n public function __construct()\n {\n $this->createdAt = new \\DateTimeImmutable();\n }\n\n \/\/ Getters\n public function getId(): ?int\n {\n return $this->id;\n }\n\n public function getTaskId(): int\n {\n return $this->taskId;\n }\n\n public function getAuthor(): string\n {\n return $this->author;\n }\n\n public function getAuthorType(): string\n {\n return $this->authorType;\n }\n\n public function getCommentType(): string\n {\n return $this->commentType;\n }\n\n public function getContent(): string\n {\n return $this->content;\n }\n\n public function getMetadata(): array\n {\n return $this->metadata;\n }\n\n public function getCreatedAt(): \\DateTimeImmutable\n {\n return $this->createdAt;\n }\n\n \/\/ Setters\n public function setId(int $id): self\n {\n $this->id = $id;\n\n return $this;\n }\n\n public function setTaskId(int $taskId): self\n {\n $this->taskId = $taskId;\n\n return $this;\n }\n\n public function setAuthor(string $author): self\n {\n $this->author = $author;\n\n return $this;\n }\n\n public function setAuthorType(string $authorType): self\n {\n $this->authorType = $authorType;\n\n return $this;\n }\n\n public function setCommentType(string $commentType): self\n {\n $this->commentType = $commentType;\n\n return $this;\n }\n\n public function setContent(string $content): self\n {\n $this->content = $content;\n\n return $this;\n }\n\n public function setMetadata(array $metadata): self\n {\n $this->metadata = $metadata;\n\n return $this;\n }\n\n public function setCreatedAt(\\DateTimeImmutable $createdAt): self\n {\n $this->createdAt = $createdAt;\n\n return $this;\n }\n\n public function toArray(): array\n {\n return [\n 'id' => $this->id,\n 'task_id' => $this->taskId,\n 'author' => $this->author,\n 'author_type' => $this->authorType,\n 'comment_type' => $this->commentType,\n 'content' => $this->content,\n 'metadata' => $this->metadata,\n 'created_at' => $this->createdAt->format('Y-m-d H:i:s.u'),\n ];\n }\n\n public static function fromArray(array $data): self\n {\n $comment = new self();\n\n if (isset($data['id'])) {\n $comment->setId((int) $data['id']);\n }\n if (isset($data['task_id'])) {\n $comment->setTaskId((int) $data['task_id']);\n }\n if (isset($data['author'])) {\n $comment->setAuthor($data['author']);\n }\n if (isset($data['author_type'])) {\n $comment->setAuthorType($data['author_type']);\n }\n if (isset($data['comment_type'])) {\n $comment->setCommentType($data['comment_type']);\n }\n if (isset($data['content'])) {\n $comment->setContent($data['content']);\n }\n if (isset($data['metadata'])) {\n $metadata = is_string($data['metadata']) ? json_decode($data['metadata'], true) : $data['metadata'];\n $comment->setMetadata($metadata ?? []);\n }\n if (isset($data['created_at'])) {\n $comment->setCreatedAt(new \\DateTimeImmutable($data['created_at']));\n }\n\n return $comment;\n }\n\n public static function createStatusChange(int $taskId, string $author, string $authorType, string $oldStatus, string $newStatus): self\n {\n $comment = new self();\n $comment->setTaskId($taskId);\n $comment->setAuthor($author);\n $comment->setAuthorType($authorType);\n $comment->setCommentType('status_change');\n $comment->setContent(\"Status geändert: {$oldStatus} → {$newStatus}\");\n $comment->setMetadata(['old_status' => $oldStatus, 'new_status' => $newStatus]);\n\n return $comment;\n }\n\n public static function createAssignmentNote(int $taskId, string $author, string $authorType, string $assignee, string $assigneeType): self\n {\n $comment = new self();\n $comment->setTaskId($taskId);\n $comment->setAuthor($author);\n $comment->setAuthorType($authorType);\n $comment->setCommentType('assignment');\n $comment->setContent(\"Zugewiesen an {$assignee} ({$assigneeType})\");\n $comment->setMetadata(['assignee' => $assignee, 'assignee_type' => $assigneeType]);\n\n return $comment;\n }\n}\n",
"structuredPatch": [
{
"oldStart": 1,
"oldLines": 7,
"newStart": 1,
"newLines": 11,
"lines": [
" <?php",
" ",
"+declare(strict_types=1);",
"+",
" namespace Domain\\Entity;",
" ",
"+\/\/ @responsibility: Task-Kommentar-Entität",
"+",
" class TaskComment",
" {",
" private ?int $id = null;"
]
}
],
"userModified": false,
"replaceAll": false
}
}