feat: complete package 2 delete flows and package 3 port management
This commit is contained in:
@@ -25,6 +25,47 @@ if (!$exists) {
|
||||
exit;
|
||||
}
|
||||
|
||||
$forceDelete = (int)($_POST['force'] ?? $_GET['force'] ?? 0) === 1;
|
||||
$dependencyCounts = $sql->single(
|
||||
"SELECT
|
||||
(SELECT COUNT(*) FROM rooms WHERE floor_id = ?) AS room_count,
|
||||
(SELECT COUNT(*) FROM racks WHERE floor_id = ?) AS rack_count,
|
||||
(SELECT COUNT(*) FROM floor_patchpanels WHERE floor_id = ?) AS patchpanel_count",
|
||||
"iii",
|
||||
[$id, $id, $id]
|
||||
);
|
||||
|
||||
$roomCount = (int)($dependencyCounts['room_count'] ?? 0);
|
||||
$rackCount = (int)($dependencyCounts['rack_count'] ?? 0);
|
||||
$patchpanelCount = (int)($dependencyCounts['patchpanel_count'] ?? 0);
|
||||
$hasDependencies = $roomCount > 0 || $rackCount > 0 || $patchpanelCount > 0;
|
||||
|
||||
if ($hasDependencies && !$forceDelete) {
|
||||
$parts = [];
|
||||
if ($roomCount > 0) {
|
||||
$parts[] = $roomCount . ' Raeume';
|
||||
}
|
||||
if ($rackCount > 0) {
|
||||
$parts[] = $rackCount . ' Racks';
|
||||
}
|
||||
if ($patchpanelCount > 0) {
|
||||
$parts[] = $patchpanelCount . ' Patchpanels';
|
||||
}
|
||||
|
||||
http_response_code(409);
|
||||
echo json_encode([
|
||||
'success' => false,
|
||||
'requires_force' => true,
|
||||
'message' => 'Beim Loeschen werden abhaengige Daten entfernt (' . implode(', ', $parts) . '). Fortfahren?',
|
||||
'dependencies' => [
|
||||
'rooms' => $roomCount,
|
||||
'racks' => $rackCount,
|
||||
'patchpanels' => $patchpanelCount
|
||||
]
|
||||
]);
|
||||
exit;
|
||||
}
|
||||
|
||||
$rows = $sql->set("DELETE FROM floors WHERE id = ?", "i", [$id]);
|
||||
if ($rows === false) {
|
||||
http_response_code(500);
|
||||
@@ -32,5 +73,13 @@ if ($rows === false) {
|
||||
exit;
|
||||
}
|
||||
|
||||
echo json_encode(['success' => true, 'message' => 'Stockwerk geloescht']);
|
||||
echo json_encode([
|
||||
'success' => true,
|
||||
'message' => 'Stockwerk geloescht',
|
||||
'dependencies' => [
|
||||
'rooms' => $roomCount,
|
||||
'racks' => $rackCount,
|
||||
'patchpanels' => $patchpanelCount
|
||||
]
|
||||
]);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user