RVRNEXT-28 add further checks before manupulating db #44
@ -199,7 +199,19 @@ class CommunityController implements IAuthenticationRequired
 | 
			
		||||
                ]);
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
            if ($this->transactionRepository->isAnyCommon()) {
 | 
			
		||||
                return new JsonContent([
 | 
			
		||||
                    'error' => ['errorText' => 'There are transactions with common payee!']
 | 
			
		||||
                ]);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            $user = $this->userRepository->getById(\Container::$request->post('user_id'));
 | 
			
		||||
            if ($this->communityMemberRepository->getByCommunityAndUser($community, $user) !== null) {
 | 
			
		||||
                return new JsonContent([
 | 
			
		||||
                    'error' => ['errorText' => 'This user is already a member of this community.']
 | 
			
		||||
                ]);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            $communityMember = new CommunityMember();
 | 
			
		||||
            $communityMember->setCommunity($community);
 | 
			
		||||
            $communityMember->setUser($user);
 | 
			
		||||
@ -295,6 +307,16 @@ class CommunityController implements IAuthenticationRequired
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if ($this->transactionRepository->isAnyForCurrency($currency)) {
 | 
			
		||||
            return new JsonContent([
 | 
			
		||||
                'error' => ['errorText' => 'There are transactions with this currency!']
 | 
			
		||||
            ]);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        foreach ($this->currencyExchangeRatesRepository->getAllByCurrency($currency) as $currencyExchangeRate) {
 | 
			
		||||
            \Container::$persistentDataManager->deleteFromDb($currencyExchangeRate);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        \Container::$persistentDataManager->deleteFromDb($currency);
 | 
			
		||||
 | 
			
		||||
        return new JsonContent(['success' => true]);
 | 
			
		||||
 | 
			
		||||
@ -3,6 +3,7 @@
 | 
			
		||||
use Container;
 | 
			
		||||
use Generator;
 | 
			
		||||
use RVR\PersistentData\Model\Community;
 | 
			
		||||
use RVR\PersistentData\Model\Currency;
 | 
			
		||||
use RVR\PersistentData\Model\Transaction;
 | 
			
		||||
use RVR\PersistentData\Model\User;
 | 
			
		||||
use SokoWeb\Database\Query\Select;
 | 
			
		||||
@ -36,6 +37,22 @@ class TransactionRepository
 | 
			
		||||
        return $select->count() > 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function isAnyCommon(): bool
 | 
			
		||||
    {
 | 
			
		||||
        $select = new Select(Container::$dbConnection, Transaction::getTable());
 | 
			
		||||
        $select->where('payee_user_id', '=', null);
 | 
			
		||||
 | 
			
		||||
        return $select->count() > 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function isAnyForCurrency(Currency $currency): bool
 | 
			
		||||
    {
 | 
			
		||||
        $select = new Select(Container::$dbConnection, Transaction::getTable());
 | 
			
		||||
        $select->where('currency_id', '=', $currency->getId());
 | 
			
		||||
 | 
			
		||||
        return $select->count() > 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function getPagedByCommunity(Community $community, int $start, int $limit, bool $useRelations = false, array $withRelations = []): Generator
 | 
			
		||||
    {
 | 
			
		||||
        $select = new Select(Container::$dbConnection);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user