diff --git a/src/Controller/CommunityController.php b/src/Controller/CommunityController.php index 5366638..74ee8f1 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)) { diff --git a/src/PersistentData/Model/Community.php b/src/PersistentData/Model/Community.php index 8419576..5a05ead 100644 --- a/src/PersistentData/Model/Community.php +++ b/src/PersistentData/Model/Community.php @@ -33,12 +33,12 @@ class Community extends ModelWithSlug $this->currency = $currency; } - public function setMainCurrency(Currency $mainCurrency): void + public function setMainCurrency(?Currency $mainCurrency): void { $this->mainCurrency = $mainCurrency; } - public function setMainCurrencyId(int $mainCurrencyId): void + public function setMainCurrencyId(?int $mainCurrencyId): void { $this->mainCurrencyId = $mainCurrencyId; } diff --git a/views/communities/community_edit.php b/views/communities/community_edit.php index 2f6f5bd..77f182d 100644 --- a/views/communities/community_edit.php +++ b/views/communities/community_edit.php @@ -25,9 +25,15 @@
-