prepare('SELECT user_id FROM tenant_memberships WHERE tenant_id = ?'); $memberStmt->execute([$tenantId]); $userIds = array_map('intval', $memberStmt->fetchAll(PDO::FETCH_COLUMN)); try { $pdo->beginTransaction(); // Tenant-bezogene Tabellen werden über ihre Fremdschlüssel // kaskadierend gelöscht. Rechtserklärungen bleiben entkoppelt als // notwendiger Vertragsnachweis erhalten. $pdo->prepare('DELETE FROM tenants WHERE id = ?')->execute([$tenantId]); foreach ($userIds as $userId) { $stmt = $pdo->prepare('SELECT COUNT(*) FROM tenant_memberships WHERE user_id = ?'); $stmt->execute([$userId]); $membershipCount = (int)$stmt->fetchColumn(); $stmt = $pdo->prepare('SELECT COUNT(*) FROM platform_admins WHERE user_id = ?'); $stmt->execute([$userId]); $isPlatformAdmin = (int)$stmt->fetchColumn() > 0; if ($membershipCount === 0 && !$isPlatformAdmin) { $pdo->prepare('DELETE FROM users WHERE id = ?')->execute([$userId]); } } $pdo->commit(); } catch (Throwable $e) { if ($pdo->inTransaction()) { $pdo->rollBack(); } $errors[] = 'Die Löschung konnte nicht vollständig ausgeführt werden. Bitte versuche es erneut oder nutze das Ticketsystem.'; } if ($errors !== []) { // Das Formular mit Fehlermeldung erneut anzeigen. } else { foreach ($logoFiles as $logoFile) { tenant_logo_delete($logoFile); } saas_logout(); header('Location: landing.php?tenant_deleted=1'); exit; } } } include 'header.php'; include 'headerline.php'; include 'nav.php'; ?>