Backup #615
| ID | 615 |
| Dateipfad | /var/www/dev.campus.systemische-tools.de/src/Controller/RelationController.php |
| Version | 6 |
| Typ |
modified |
| Größe | 4.2 KB |
| Hash | bb5208d57e23f280afdea615fd794a4e3e7f200cab420f6ee2800df697f0ba30 |
| Datum | 2025-12-23 04:42:28 |
| Geändert von | claude-code-hook |
| Grund | Claude Code Pre-Hook Backup vor Edit-Operation |
| Datei existiert |
Ja
|
Dateiinhalt
<?php
namespace Controller;
use Framework\Controller;
use Infrastructure\Formatter\ApiResponseFormatter;
use Infrastructure\SemanticExplorerRepository;
/**
* RelationController - CRUD for Semantic Explorer Relations
*
* Extracted from SemanticExplorerController for SRP compliance.
*/
class RelationController extends Controller
{
private SemanticExplorerRepository $repository;
private ApiResponseFormatter $apiFormatter;
public function __construct(
?SemanticExplorerRepository $repository = null,
?ApiResponseFormatter $apiFormatter = null
) {
$this->repository = $repository ?? new SemanticExplorerRepository();
$this->apiFormatter = $apiFormatter ?? new ApiResponseFormatter();
}
/**
* GET /semantic-explorer/relationen
* Beziehungen zwischen Entitaeten
*/
public function index(): void
{
$type = $this->getString('type');
$relations = $this->repository->getRelationsFiltered($type);
$relationTypes = $this->repository->getRelationTypes();
$stats = $this->repository->getRelationStats();
$this->view('semantic-explorer.relationen', [
'title' => 'Relationen',
'relations' => $relations,
'relationTypes' => $relationTypes,
'stats' => $stats,
'currentType' => $type,
]);
}
/**
* GET /semantic-explorer/relationen/new
*/
public function create(): void
{
$this->view('semantic-explorer.relationen.new', [
'title' => 'Neue Relation',
'entities' => $this->repository->getAllEntitiesSimple(),
'relationTypes' => $this->repository->getRelationTypesList(),
]);
}
/**
* POST /semantic-explorer/relationen
*/
public function store(): void
{
$input = $this->getJsonInput();
$sourceId = (int) ($input['source_entity_id'] ?? 0);
$targetId = (int) ($input['target_entity_id'] ?? 0);
$type = trim($input['relation_type'] ?? '');
$strength = (float) ($input['strength'] ?? 1.0);
if ($sourceId === 0 || $targetId === 0 || $type === '') {
$this->json($this->apiFormatter->validationError('Alle Felder sind erforderlich'), 400);
return;
}
try {
$id = $this->repository->createRelation($sourceId, $targetId, $type, $strength);
$this->json($this->apiFormatter->created($id, 'Relation erstellt'));
} catch (\Exception $e) {
$this->json($this->apiFormatter->error($e->getMessage(), 'SERVER_ERROR'), 500);
}
}
/**
* GET /semantic-explorer/relationen/{id}/edit
*/
public function edit(int $id): void
{
$relation = $this->repository->getRelation($id);
if ($relation === null) {
$this->notFound('Relation nicht gefunden');
}
$this->view('semantic-explorer.relationen.edit', [
'title' => 'Relation bearbeiten',
'relation' => $relation,
'relationTypes' => $this->repository->getRelationTypesList(),
]);
}
/**
* POST /semantic-explorer/relationen/{id}
*/
public function update(int $id): void
{
$input = $this->getJsonInput();
$type = trim($input['relation_type'] ?? '');
$strength = (float) ($input['strength'] ?? 1.0);
if ($type === '') {
$this->json($this->apiFormatter->validationError('Beziehungstyp ist erforderlich', ['relation_type' => 'Pflichtfeld']), 400);
return;
}
try {
$this->repository->updateRelation($id, $type, $strength);
$this->json($this->apiFormatter->ok('Relation aktualisiert'));
} catch (\Exception $e) {
$this->json($this->apiFormatter->error($e->getMessage(), 'SERVER_ERROR'), 500);
}
}
/**
* POST /semantic-explorer/relationen/{id}/delete
*/
public function delete(int $id): void
{
try {
$this->repository->deleteRelation($id);
$this->json($this->apiFormatter->ok('Relation gelöscht'));
} 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 |
| 1718 |
16 |
modified |
4.9 KB |
2025-12-27 12:30 |
| 1717 |
15 |
modified |
4.3 KB |
2025-12-27 12:29 |
| 1096 |
14 |
modified |
4.3 KB |
2025-12-25 09:19 |
| 1095 |
13 |
modified |
4.3 KB |
2025-12-25 09:19 |
| 1080 |
12 |
modified |
4.3 KB |
2025-12-25 02:29 |
| 1079 |
11 |
modified |
4.3 KB |
2025-12-25 02:29 |
| 1078 |
10 |
modified |
4.3 KB |
2025-12-25 02:28 |
| 1077 |
9 |
modified |
4.3 KB |
2025-12-25 02:28 |
| 1076 |
8 |
modified |
4.1 KB |
2025-12-25 02:28 |
| 693 |
7 |
modified |
4.1 KB |
2025-12-23 07:52 |
| 615 |
6 |
modified |
4.2 KB |
2025-12-23 04:42 |
| 521 |
5 |
modified |
4.1 KB |
2025-12-22 15:50 |
| 520 |
4 |
modified |
4.1 KB |
2025-12-22 15:50 |
| 519 |
3 |
modified |
3.8 KB |
2025-12-22 15:49 |
| 305 |
2 |
modified |
3.8 KB |
2025-12-22 08:05 |
| 304 |
1 |
modified |
3.8 KB |
2025-12-22 08:05 |
← Zurück zur Übersicht