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 ] ]);