{
"tool_response": {
"type": "update",
"filePath": "\/var\/www\/dev.campus.systemische-tools.de\/src\/Controller\/ProtokollController.php",
"content": "<?php\n\nnamespace Controller;\n\nuse Domain\\ValueObject\\Pagination;\nuse Framework\\Controller;\nuse UseCases\\Protokoll\\ViewProtokollUseCase;\n\nclass ProtokollController extends Controller\n{\n private ViewProtokollUseCase $protokollUseCase;\n\n public function __construct(?ViewProtokollUseCase $protokollUseCase = null)\n {\n $this->protokollUseCase = $protokollUseCase ?? new ViewProtokollUseCase();\n }\n\n public function index(): void\n {\n $pagination = Pagination::fromRequest(50);\n\n $search = $this->getString('search');\n $status = $this->getString('status');\n $model = $this->getString('model');\n\n $searchVal = $search !== '' ? $search : null;\n $statusVal = $status !== '' ? $status : null;\n $modelVal = $model !== '' ? $model : null;\n\n $result = $this->protokollUseCase->getPaginated($searchVal, $statusVal, $modelVal, $pagination);\n $updatedPagination = $result['pagination'];\n\n $this->view('protokoll.index', [\n 'title' => 'KI-Protokoll',\n 'stats' => $this->protokollUseCase->getStatistics(),\n 'entries' => array_map(fn ($dto) => (array) $dto, $result['entries']),\n 'models' => $this->protokollUseCase->getDistinctModels(),\n 'currentSearch' => $search,\n 'currentStatus' => $status,\n 'currentModel' => $model,\n 'currentPage' => $updatedPagination->page,\n 'totalCount' => $updatedPagination->totalCount,\n 'totalPages' => $updatedPagination->totalPages(),\n ]);\n }\n\n public function show(string $id): void\n {\n $entry = $this->protokollUseCase->getById((int) $id);\n if ($entry === null) {\n $this->notFound('Protokoll-Eintrag nicht gefunden');\n }\n\n $nav = $this->protokollUseCase->getNavigation((int) $id);\n\n $this->view('protokoll.show', [\n 'title' => 'Protokoll #' . $id,\n 'entry' => (array) $entry,\n 'prevEntry' => $nav['prevId'] !== null ? ['id' => $nav['prevId']] : false,\n 'nextEntry' => $nav['nextId'] !== null ? ['id' => $nav['nextId']] : false,\n ]);\n }\n}\n",
"structuredPatch": [
{
"oldStart": 4,
"oldLines": 15,
"newStart": 4,
"newLines": 15,
"lines": [
" ",
" use Domain\\ValueObject\\Pagination;",
" use Framework\\Controller;",
"-use Infrastructure\\Persistence\\KiProtokollRepository;",
"+use UseCases\\Protokoll\\ViewProtokollUseCase;",
" ",
" class ProtokollController extends Controller",
" {",
"- private KiProtokollRepository $protokollRepo;",
"+ private ViewProtokollUseCase $protokollUseCase;",
" ",
"- public function __construct(?KiProtokollRepository $protokollRepo = null)",
"+ public function __construct(?ViewProtokollUseCase $protokollUseCase = null)",
" {",
"- $this->protokollRepo = $protokollRepo ?? new KiProtokollRepository();",
"+ $this->protokollUseCase = $protokollUseCase ?? new ViewProtokollUseCase();",
" }",
" ",
" public function index(): void"
]
},
{
"oldStart": 27,
"oldLines": 65,
"newStart": 27,
"newLines": 37,
"lines": [
" $statusVal = $status !== '' ? $status : null;",
" $modelVal = $model !== '' ? $model : null;",
" ",
"- $totalCount = $this->protokollRepo->countFiltered($searchVal, $statusVal, $modelVal);",
"- $pagination = $pagination->withTotal($totalCount);",
"+ $result = $this->protokollUseCase->getPaginated($searchVal, $statusVal, $modelVal, $pagination);",
"+ $updatedPagination = $result['pagination'];",
" ",
"- $entries = $this->protokollRepo->findPaginated(",
"- $searchVal,",
"- $statusVal,",
"- $modelVal,",
"- $pagination->limit,",
"- $pagination->offset",
"- );",
"-",
" $this->view('protokoll.index', [",
" 'title' => 'KI-Protokoll',",
"- 'stats' => $this->protokollRepo->getStatistics(),",
"- 'entries' => $entries,",
"- 'models' => $this->protokollRepo->getDistinctModels(),",
"+ 'stats' => $this->protokollUseCase->getStatistics(),",
"+ 'entries' => array_map(fn ($dto) => (array) $dto, $result['entries']),",
"+ 'models' => $this->protokollUseCase->getDistinctModels(),",
" 'currentSearch' => $search,",
" 'currentStatus' => $status,",
" 'currentModel' => $model,",
"- 'currentPage' => $pagination->page,",
"- 'totalCount' => $pagination->totalCount,",
"- 'totalPages' => $pagination->totalPages(),",
"+ 'currentPage' => $updatedPagination->page,",
"+ 'totalCount' => $updatedPagination->totalCount,",
"+ 'totalPages' => $updatedPagination->totalPages(),",
" ]);",
" }",
" ",
" public function show(string $id): void",
" {",
"- $entry = $this->protokollRepo->findById((int) $id);",
"+ $entry = $this->protokollUseCase->getById((int) $id);",
" if ($entry === null) {",
" $this->notFound('Protokoll-Eintrag nicht gefunden');",
" }",
" ",
"- $entry['request_formatted'] = $this->formatJson($entry['request']);",
"- $entry['response_formatted'] = $this->formatJson($entry['response']);",
"+ $nav = $this->protokollUseCase->getNavigation((int) $id);",
" ",
"- $prevId = $this->protokollRepo->findPreviousId((int) $id);",
"- $nextId = $this->protokollRepo->findNextId((int) $id);",
"-",
" $this->view('protokoll.show', [",
" 'title' => 'Protokoll #' . $id,",
"- 'entry' => $entry,",
"- 'prevEntry' => $prevId !== null ? ['id' => $prevId] : false,",
"- 'nextEntry' => $nextId !== null ? ['id' => $nextId] : false,",
"+ 'entry' => (array) $entry,",
"+ 'prevEntry' => $nav['prevId'] !== null ? ['id' => $nav['prevId']] : false,",
"+ 'nextEntry' => $nav['nextId'] !== null ? ['id' => $nav['nextId']] : false,",
" ]);",
" }",
"-",
"- private function formatJson(?string $json): string",
"- {",
"- if ($json === null || $json === '') {",
"- return '-';",
"- }",
"-",
"- $decoded = json_decode($json, true);",
"- if ($decoded === null) {",
"- return htmlspecialchars($json);",
"- }",
"-",
"- $formatted = json_encode($decoded, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);",
"-",
"- return $formatted !== false ? $formatted : htmlspecialchars($json);",
"- }",
" }"
]
}
],
"originalFile": "<?php\n\nnamespace Controller;\n\nuse Domain\\ValueObject\\Pagination;\nuse Framework\\Controller;\nuse Infrastructure\\Persistence\\KiProtokollRepository;\n\nclass ProtokollController extends Controller\n{\n private KiProtokollRepository $protokollRepo;\n\n public function __construct(?KiProtokollRepository $protokollRepo = null)\n {\n $this->protokollRepo = $protokollRepo ?? new KiProtokollRepository();\n }\n\n public function index(): void\n {\n $pagination = Pagination::fromRequest(50);\n\n $search = $this->getString('search');\n $status = $this->getString('status');\n $model = $this->getString('model');\n\n $searchVal = $search !== '' ? $search : null;\n $statusVal = $status !== '' ? $status : null;\n $modelVal = $model !== '' ? $model : null;\n\n $totalCount = $this->protokollRepo->countFiltered($searchVal, $statusVal, $modelVal);\n $pagination = $pagination->withTotal($totalCount);\n\n $entries = $this->protokollRepo->findPaginated(\n $searchVal,\n $statusVal,\n $modelVal,\n $pagination->limit,\n $pagination->offset\n );\n\n $this->view('protokoll.index', [\n 'title' => 'KI-Protokoll',\n 'stats' => $this->protokollRepo->getStatistics(),\n 'entries' => $entries,\n 'models' => $this->protokollRepo->getDistinctModels(),\n 'currentSearch' => $search,\n 'currentStatus' => $status,\n 'currentModel' => $model,\n 'currentPage' => $pagination->page,\n 'totalCount' => $pagination->totalCount,\n 'totalPages' => $pagination->totalPages(),\n ]);\n }\n\n public function show(string $id): void\n {\n $entry = $this->protokollRepo->findById((int) $id);\n if ($entry === null) {\n $this->notFound('Protokoll-Eintrag nicht gefunden');\n }\n\n $entry['request_formatted'] = $this->formatJson($entry['request']);\n $entry['response_formatted'] = $this->formatJson($entry['response']);\n\n $prevId = $this->protokollRepo->findPreviousId((int) $id);\n $nextId = $this->protokollRepo->findNextId((int) $id);\n\n $this->view('protokoll.show', [\n 'title' => 'Protokoll #' . $id,\n 'entry' => $entry,\n 'prevEntry' => $prevId !== null ? ['id' => $prevId] : false,\n 'nextEntry' => $nextId !== null ? ['id' => $nextId] : false,\n ]);\n }\n\n private function formatJson(?string $json): string\n {\n if ($json === null || $json === '') {\n return '-';\n }\n\n $decoded = json_decode($json, true);\n if ($decoded === null) {\n return htmlspecialchars($json);\n }\n\n $formatted = json_encode($decoded, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);\n\n return $formatted !== false ? $formatted : htmlspecialchars($json);\n }\n}\n"
}
}