diff --git a/src/Controller/CommunityController.php b/src/Controller/CommunityController.php index 5366638..c175467 100644 --- a/src/Controller/CommunityController.php +++ b/src/Controller/CommunityController.php @@ -176,6 +176,43 @@ class CommunityController implements IAuthenticationRequired ]); } + public function deleteCommunity(): IContent + { + if (!$this->checkPermission(\Container::$request->query('communitySlug'), true, $community, $ownCommunityMember)) { + return null; + } + + if ($this->transactionRepository->countAllByCommunity($community) > 0) { + return new JsonContent([ + 'error' => ['errorText' => 'There are transactions for this community!'] + ]); + } + + if ($this->eventRepository->countAllByCommunity($community) > 0) { + return new JsonContent([ + 'error' => ['errorText' => 'There are events for this community!'] + ]); + } + + foreach ($this->communityMemberRepository->getAllByCommunity($community) as $communityMember) { + \Container::$persistentDataManager->deleteFromDb($communityMember); + } + + $community->setMainCurrencyId(null); + \Container::$persistentDataManager->saveToDb($community); + + foreach ($this->currencyRepository->getAllByCommunity($community) as $currency) { + foreach ($this->currencyExchangeRatesRepository->getAllByCurrency($currency) as $currencyExchangeRate) { + \Container::$persistentDataManager->deleteFromDb($currencyExchangeRate); + } + \Container::$persistentDataManager->deleteFromDb($currency); + } + + \Container::$persistentDataManager->deleteFromDb($community); + + return new JsonContent(['success' => true]); + } + public function getMembersEdit(): ?IContent { if (!$this->checkPermission(\Container::$request->query('communitySlug'), true, $community, $ownCommunityMember)) {