86 lines
2.4 KiB
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
|
|
]
|
|
]);
|
|
|