Files
netwatch/app/modules/floors/delete.php

86 lines
2.4 KiB
PHP

<?php
/**
* app/modules/floors/delete.php
*/
header('Content-Type: application/json; charset=utf-8');
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
http_response_code(405);
echo json_encode(['success' => false, 'message' => 'Methode nicht erlaubt']);
exit;
}
$id = (int)($_POST['id'] ?? $_GET['id'] ?? 0);
if ($id <= 0) {
http_response_code(400);
echo json_encode(['success' => false, 'message' => 'ID fehlt']);
exit;
}
$exists = $sql->single("SELECT id FROM floors WHERE id = ?", "i", [$id]);
if (!$exists) {
http_response_code(404);
echo json_encode(['success' => false, 'message' => 'Stockwerk nicht gefunden']);
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);
echo json_encode(['success' => false, 'message' => 'Loeschen fehlgeschlagen']);
exit;
}
echo json_encode([
'success' => true,
'message' => 'Stockwerk geloescht',
'dependencies' => [
'rooms' => $roomCount,
'racks' => $rackCount,
'patchpanels' => $patchpanelCount
]
]);