Merge pull request 'RVRNEXT-30 check if member already has associated transaction' (!43) from bugfix/RVRNEXT-29-prevent-deleting-member-who-has-transaction into master
rvr-nextgen/pipeline/head This commit looks good

Reviewed-on: #43
This commit was merged in pull request #43.
This commit is contained in:
bence authored and Gitea committed 2023-05-02 02:51:02 +02:00
commit 1f32387f63
2 files changed
+22

No files matched your search

+11
View File
@@ -11,6 +11,7 @@ use RVR\Repository\CommunityRepository;
use RVR\Repository\CommunityMemberRepository;
use RVR\Repository\CurrencyExchangeRateRepository;
use RVR\Repository\CurrencyRepository;
use RVR\Repository\TransactionRepository;
use RVR\Repository\UserRepository;
use SokoWeb\Interfaces\Authentication\IAuthenticationRequired;
use SokoWeb\Interfaces\Response\IContent;
@@ -29,6 +30,8 @@ class CommunityController implements IAuthenticationRequired
private CurrencyExchangeRateRepository $currencyExchangeRatesRepository;
private TransactionRepository $transactionRepository;
public function __construct()
{
$this->userRepository = new UserRepository();
@@ -36,6 +39,7 @@ class CommunityController implements IAuthenticationRequired
$this->communityMemberRepository = new CommunityMemberRepository();
$this->currencyRepository = new CurrencyRepository();
$this->currencyExchangeRatesRepository = new CurrencyExchangeRateRepository();
$this->transactionRepository = new TransactionRepository();
}
public function isAuthenticationRequired(): bool
@@ -220,6 +224,13 @@ class CommunityController implements IAuthenticationRequired
]);
}
\Container::$persistentDataManager->loadRelationsFromDb($communityMember, false, ['user']);
if ($this->transactionRepository->isAnyForUser($communityMember->getUser())) {
return new JsonContent([
'error' => ['errorText' => 'There are transactions where the member is payer or payee!']
]);
}
\Container::$persistentDataManager->deleteFromDb($communityMember);
return new JsonContent(['success' => true]);
+11
View File
@@ -4,6 +4,7 @@ use Container;
use Generator;
use RVR\PersistentData\Model\Community;
use RVR\PersistentData\Model\Transaction;
use RVR\PersistentData\Model\User;
use SokoWeb\Database\Query\Select;
class TransactionRepository
@@ -25,6 +26,16 @@ class TransactionRepository
return $this->selectAllByCommunity($community)->count();
}
public function isAnyForUser(User $user): bool
{
$select = new Select(Container::$dbConnection, Transaction::getTable());
$select->where('payer_user_id', '=', $user->getId());
$select->orWhere('payee_user_id', '=', $user->getId());
$select->orWhere('payee_user_id', '=', null);
return $select->count() > 0;
}
public function getPagedByCommunity(Community $community, int $start, int $limit, bool $useRelations = false, array $withRelations = []): Generator
{
$select = new Select(Container::$dbConnection);