{
"event": "PreToolUse",
"tool_name": "Write",
"tool_input": {
"file_path": "\/var\/www\/dev.campus.systemische-tools.de\/src\/UseCases\/Critics\/CriticDTO.php",
"content": "<?php\n\nnamespace UseCases\\Critics;\n\nfinal class CriticDTO\n{\n public function __construct(\n public readonly ?int $id,\n public readonly string $name,\n public readonly array $fokus,\n public readonly ?int $promptId,\n public readonly int $sortOrder,\n public readonly bool $isActive,\n public readonly ?string $promptName = null,\n ) {\n }\n\n public static function fromArray(array $data): self\n {\n $fokus = $data['fokus'] ?? '[]';\n if (is_string($fokus)) {\n $fokus = json_decode($fokus, true) ?? [];\n }\n\n return new self(\n id: isset($data['id']) ? (int) $data['id'] : null,\n name: $data['name'] ?? '',\n fokus: is_array($fokus) ? $fokus : [],\n promptId: isset($data['prompt_id']) ? (int) $data['prompt_id'] : null,\n sortOrder: (int) ($data['sort_order'] ?? 0),\n isActive: (bool) ($data['is_active'] ?? false),\n promptName: $data['prompt_name'] ?? null,\n );\n }\n\n public function fokusAsText(): string\n {\n return implode(\"\\n\", $this->fokus);\n }\n}\n"
}
}
{
"tool_response": {
"type": "create",
"filePath": "\/var\/www\/dev.campus.systemische-tools.de\/src\/UseCases\/Critics\/CriticDTO.php",
"content": "<?php\n\nnamespace UseCases\\Critics;\n\nfinal class CriticDTO\n{\n public function __construct(\n public readonly ?int $id,\n public readonly string $name,\n public readonly array $fokus,\n public readonly ?int $promptId,\n public readonly int $sortOrder,\n public readonly bool $isActive,\n public readonly ?string $promptName = null,\n ) {\n }\n\n public static function fromArray(array $data): self\n {\n $fokus = $data['fokus'] ?? '[]';\n if (is_string($fokus)) {\n $fokus = json_decode($fokus, true) ?? [];\n }\n\n return new self(\n id: isset($data['id']) ? (int) $data['id'] : null,\n name: $data['name'] ?? '',\n fokus: is_array($fokus) ? $fokus : [],\n promptId: isset($data['prompt_id']) ? (int) $data['prompt_id'] : null,\n sortOrder: (int) ($data['sort_order'] ?? 0),\n isActive: (bool) ($data['is_active'] ?? false),\n promptName: $data['prompt_name'] ?? null,\n );\n }\n\n public function fokusAsText(): string\n {\n return implode(\"\\n\", $this->fokus);\n }\n}\n",
"structuredPatch": [],
"originalFile": null
}
}