Bearbeite Issues #22 bis #24

closes #22

closes #23

closes #24
This commit is contained in:
2026-02-19 10:31:53 +01:00
parent 0642a3b6ef
commit b973d2857b
6 changed files with 49 additions and 97 deletions

View File

@@ -77,9 +77,6 @@ $isEndpointAllowed = static function (string $type, int $id) use ($occupiedByTyp
if ($id <= 0) {
return false;
}
if ($type === 'outlet') {
return true;
}
if ($type === $portAType && $id === $portAId) {
return true;
}
@@ -173,7 +170,14 @@ foreach ($outletPorts as $row) {
if (!$isEndpointAllowed('outlet', $id)) {
continue;
}
$parts = array_filter([(string)($row['floor_name'] ?? ''), (string)($row['room_name'] ?? ''), (string)$row['outlet_name'], (string)$row['name']]);
$portName = trim((string)($row['name'] ?? ''));
$includePortName = ($portName !== '' && strcasecmp($portName, 'Port 1') !== 0);
$parts = array_filter([
(string)($row['floor_name'] ?? ''),
(string)($row['room_name'] ?? ''),
(string)$row['outlet_name'],
$includePortName ? $portName : '',
]);
$endpointOptions['outlet'][] = [
'id' => $id,
'label' => implode(' / ', $parts),

View File

@@ -75,25 +75,16 @@ $otherConnections = $sql->get(
);
$endpointUsage = [];
$trackUsage = static function (string $endpointType, int $endpointId, string $otherType) use (&$endpointUsage): void {
$trackUsage = static function (string $endpointType, int $endpointId) use (&$endpointUsage): void {
if ($endpointId <= 0) {
return;
}
if (!isset($endpointUsage[$endpointType][$endpointId])) {
$endpointUsage[$endpointType][$endpointId] = [
'total' => 0,
'patchpanel' => 0,
'other' => 0,
];
}
$endpointUsage[$endpointType][$endpointId]['total']++;
if ($endpointType === 'outlet') {
if ($otherType === 'patchpanel') {
$endpointUsage[$endpointType][$endpointId]['patchpanel']++;
} else {
$endpointUsage[$endpointType][$endpointId]['other']++;
}
}
};
foreach ((array)$otherConnections as $row) {
@@ -102,43 +93,29 @@ foreach ((array)$otherConnections as $row) {
$idA = (int)($row['port_a_id'] ?? 0);
$idB = (int)($row['port_b_id'] ?? 0);
$trackUsage($typeA, $idA, $typeB);
$trackUsage($typeB, $idB, $typeA);
$trackUsage($typeA, $idA);
$trackUsage($typeB, $idB);
}
$validateEndpointUsage = static function (string $endpointType, int $endpointId, string $otherType, string $label) use ($endpointUsage): ?string {
$validateEndpointUsage = static function (string $endpointType, int $endpointId, string $label) use ($endpointUsage): ?string {
if ($endpointId <= 0) {
return null;
}
$stats = $endpointUsage[$endpointType][$endpointId] ?? ['total' => 0, 'patchpanel' => 0, 'other' => 0];
$stats = $endpointUsage[$endpointType][$endpointId] ?? ['total' => 0];
if ((int)$stats['total'] <= 0) {
return null;
}
if ($endpointType !== 'outlet') {
return $label . " ist bereits in Verwendung";
}
if ($otherType === 'patchpanel') {
if ((int)$stats['patchpanel'] > 0) {
return $label . " hat bereits eine Patchpanel-Verbindung";
}
return null;
}
if ((int)$stats['other'] > 0) {
return $label . " hat bereits eine Endgeraete-Verbindung";
}
return null;
return $label . " ist bereits in Verwendung";
};
$errorA = $validateEndpointUsage($portAType, $portAId, $portBType, 'Port an Endpunkt A');
$errorA = $validateEndpointUsage($portAType, $portAId, 'Port an Endpunkt A');
if ($errorA !== null) {
$errors[] = $errorA;
}
$errorB = $validateEndpointUsage($portBType, $portBId, $portAType, 'Port an Endpunkt B');
$errorB = $validateEndpointUsage($portBType, $portBId, 'Port an Endpunkt B');
if ($errorB !== null) {
$errors[] = $errorB;
}