Backup #1024
| ID | 1024 |
| Dateipfad | /var/www/dev.campus.systemische-tools.de/src/Controller/OntologyController.php |
| Version | 9 |
| Typ |
modified |
| Größe | 4.6 KB |
| Hash | b8b319918cad5ea773accf620b865566193a5100ef829f6a37f7e50c6d3509d5 |
| Datum | 2025-12-24 20:20:03 |
| 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 Controller;
// @responsibility: HTTP-Endpunkte für Semantic Explorer Ontologie (CRUD)
use Framework\Controller;
use Infrastructure\Audit\AuditService;
use Infrastructure\Formatter\ApiResponseFormatter;
use Infrastructure\SemanticExplorerRepository;
class OntologyController extends Controller
{
private SemanticExplorerRepository $repository;
private ApiResponseFormatter $apiFormatter;
private AuditService $audit;
public function __construct(
SemanticExplorerRepository $repository,
ApiResponseFormatter $apiFormatter,
AuditService $audit
) {
$this->repository = $repository;
$this->apiFormatter = $apiFormatter;
$this->audit = $audit;
}
/**
* GET /semantic-explorer/ontologie
* Konzept-Klassen
*/
public function index(): void
{
$classes = $this->repository->getOntologyClasses();
// Properties dekodieren
foreach ($classes as &$class) {
$class['properties_decoded'] = $this->decodeJson($class['properties'] ?? null);
}
$stats = $this->repository->getOntologyStats();
$this->view('semantic-explorer.ontologie', [
'title' => 'Ontologie',
'classes' => $classes,
'stats' => $stats,
]);
}
/**
* GET /semantic-explorer/ontologie/new
*/
public function create(): void
{
$this->view('semantic-explorer.ontologie.new', [
'title' => 'Neue Ontologie-Klasse',
'classes' => $this->repository->getOntologyClassesForSelect(),
]);
}
/**
* POST /semantic-explorer/ontologie
*/
public function store(): void
{
$input = $this->getJsonInput();
$name = trim($input['name'] ?? '');
$parentId = isset($input['parent_class_id']) && $input['parent_class_id'] !== '' ? (int) $input['parent_class_id'] : null;
$description = trim($input['description'] ?? '') ?: null;
$properties = $input['properties'] ?? [];
if ($name === '') {
$this->json($this->apiFormatter->validationError('Name ist erforderlich', ['name' => 'Pflichtfeld']), 400);
return;
}
try {
$id = $this->repository->createOntologyClass($name, $parentId, $description, $properties);
$this->json($this->apiFormatter->created($id, 'Ontologie-Klasse erstellt'));
} catch (\Exception $e) {
$this->json($this->apiFormatter->error($e->getMessage(), 'SERVER_ERROR'), 500);
}
}
/**
* GET /semantic-explorer/ontologie/{id}/edit
*/
public function edit(int $id): void
{
$class = $this->repository->getOntologyClass($id);
if ($class === null) {
$this->notFound('Klasse nicht gefunden');
}
$this->view('semantic-explorer.ontologie.edit', [
'title' => 'Klasse bearbeiten',
'class' => $class,
'classes' => $this->repository->getOntologyClassesForSelect(),
]);
}
/**
* POST /semantic-explorer/ontologie/{id}
*/
public function update(int $id): void
{
$input = $this->getJsonInput();
$name = trim($input['name'] ?? '');
$parentId = isset($input['parent_class_id']) && $input['parent_class_id'] !== '' ? (int) $input['parent_class_id'] : null;
$description = trim($input['description'] ?? '') ?: null;
$properties = $input['properties'] ?? [];
if ($name === '') {
$this->json($this->apiFormatter->validationError('Name ist erforderlich', ['name' => 'Pflichtfeld']), 400);
return;
}
try {
$this->repository->updateOntologyClass($id, $name, $parentId, $description, $properties);
$this->json($this->apiFormatter->ok('Ontologie-Klasse aktualisiert'));
} catch (\Exception $e) {
$this->json($this->apiFormatter->error($e->getMessage(), 'SERVER_ERROR'), 500);
}
}
/**
* POST /semantic-explorer/ontologie/{id}/delete
*/
public function delete(int $id): void
{
try {
$success = $this->repository->deleteOntologyClass($id);
if ($success) {
$this->json($this->apiFormatter->ok('Ontologie-Klasse gelöscht'));
} else {
$this->json($this->apiFormatter->error('Klasse hat noch Unterklassen', 'HAS_CHILDREN'), 400);
}
} catch (\Exception $e) {
$this->json($this->apiFormatter->error($e->getMessage(), 'SERVER_ERROR'), 500);
}
}
}
Vollständig herunterladen
Aktionen
Andere Versionen dieser Datei
| ID |
Version |
Typ |
Größe |
Datum |
| 1724 |
22 |
modified |
7.6 KB |
2025-12-27 12:33 |
| 1723 |
21 |
modified |
7.4 KB |
2025-12-27 12:33 |
| 1722 |
20 |
modified |
7.1 KB |
2025-12-27 12:32 |
| 1721 |
19 |
modified |
6.6 KB |
2025-12-27 12:31 |
| 1528 |
18 |
modified |
5.8 KB |
2025-12-26 07:01 |
| 1058 |
17 |
modified |
5.8 KB |
2025-12-25 02:22 |
| 1057 |
16 |
modified |
5.9 KB |
2025-12-25 02:22 |
| 1056 |
15 |
modified |
5.9 KB |
2025-12-25 02:22 |
| 1055 |
14 |
modified |
5.9 KB |
2025-12-25 02:22 |
| 1054 |
13 |
modified |
5.9 KB |
2025-12-25 02:22 |
| 1053 |
12 |
modified |
5.9 KB |
2025-12-25 02:22 |
| 1052 |
11 |
modified |
5.9 KB |
2025-12-25 02:22 |
| 1025 |
10 |
modified |
4.9 KB |
2025-12-24 20:20 |
| 1024 |
9 |
modified |
4.6 KB |
2025-12-24 20:20 |
| 1023 |
8 |
modified |
4.4 KB |
2025-12-24 20:19 |
| 694 |
7 |
modified |
4.5 KB |
2025-12-23 07:52 |
| 616 |
6 |
modified |
4.5 KB |
2025-12-23 04:42 |
| 512 |
5 |
modified |
4.4 KB |
2025-12-22 15:47 |
| 511 |
4 |
modified |
4.3 KB |
2025-12-22 15:47 |
| 510 |
3 |
modified |
4.0 KB |
2025-12-22 15:47 |
| 298 |
2 |
modified |
4.1 KB |
2025-12-22 08:04 |
| 292 |
1 |
modified |
4.1 KB |
2025-12-22 08:03 |
← Zurück zur Übersicht