RVRNEXT-11 add event for transactions
This commit is contained in:
6 files changed
+163
-20
No files matched your search
@@ -11,6 +11,7 @@ use RVR\Repository\CommunityMemberRepository;
|
||||
use RVR\Repository\CommunityRepository;
|
||||
use RVR\Repository\CurrencyRepository;
|
||||
use RVR\Repository\TransactionRepository;
|
||||
use RVR\Repository\EventRepository;
|
||||
use SokoWeb\Interfaces\Authentication\IAuthenticationRequired;
|
||||
use SokoWeb\Interfaces\Authorization\ISecured;
|
||||
use SokoWeb\Interfaces\Response\IContent;
|
||||
@@ -27,9 +28,11 @@ class TransactionController implements IAuthenticationRequired, ISecured
|
||||
|
||||
private TransactionRepository $transactionRepository;
|
||||
|
||||
private Community $community;
|
||||
private EventRepository $eventRepository;
|
||||
|
||||
private CommunityMember $ownCommunityMember;
|
||||
private ?Community $community;
|
||||
|
||||
private ?CommunityMember $ownCommunityMember;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
@@ -37,6 +40,7 @@ class TransactionController implements IAuthenticationRequired, ISecured
|
||||
$this->communityMemberRepository = new CommunityMemberRepository();
|
||||
$this->currencyRepository = new CurrencyRepository();
|
||||
$this->transactionRepository = new TransactionRepository();
|
||||
$this->eventRepository = new EventRepository();
|
||||
}
|
||||
|
||||
public function isAuthenticationRequired(): bool
|
||||
@@ -69,20 +73,38 @@ class TransactionController implements IAuthenticationRequired, ISecured
|
||||
Container::$persistentDataManager->loadRelationsFromDb($this->community, true, ['main_currency']);
|
||||
$exchangeRateCalculator = new ExchangeRateCalculator($this->community->getMainCurrency());
|
||||
|
||||
$eventSlug = Container::$request->query('event');
|
||||
if ($eventSlug) {
|
||||
$event = $this->eventRepository->getBySlug($eventSlug);
|
||||
} else {
|
||||
$event = null;
|
||||
}
|
||||
|
||||
$itemsPerPage = 50;
|
||||
$numberOfTransactions = $this->transactionRepository->countAllByCommunity($this->community);
|
||||
$numberOfTransactions = $event ?
|
||||
$this->transactionRepository->countAllByEvent($event) :
|
||||
$this->transactionRepository->countAllByCommunity($this->community);
|
||||
$pages = ceil($numberOfTransactions / $itemsPerPage);
|
||||
$currentPage = Container::$request->query('page') ?: 0;
|
||||
$transactions = $this->transactionRepository->getPagedByCommunity(
|
||||
$this->community,
|
||||
$currentPage * $itemsPerPage,
|
||||
$itemsPerPage,
|
||||
true,
|
||||
['currency', 'payer_user', 'payee_user']
|
||||
);
|
||||
$transactions = $event ?
|
||||
$this->transactionRepository->getPagedByEvent(
|
||||
$event,
|
||||
$currentPage * $itemsPerPage,
|
||||
$itemsPerPage,
|
||||
true,
|
||||
['currency', 'payer_user', 'payee_user']
|
||||
) :
|
||||
$this->transactionRepository->getPagedByCommunity(
|
||||
$this->community,
|
||||
$currentPage * $itemsPerPage,
|
||||
$itemsPerPage,
|
||||
true,
|
||||
['event', 'currency', 'payer_user', 'payee_user']
|
||||
);
|
||||
|
||||
return new HtmlContent('communities/transactions', [
|
||||
'community' => $this->community,
|
||||
'event' => $event,
|
||||
'exchangeRateCalculator' => $exchangeRateCalculator,
|
||||
'pages' => $pages,
|
||||
'currentPage' => $currentPage,
|
||||
@@ -99,13 +121,22 @@ class TransactionController implements IAuthenticationRequired, ISecured
|
||||
if ($transaction === null) {
|
||||
return null;
|
||||
}
|
||||
Container::$persistentDataManager->loadRelationsFromDb($transaction, false, ['event']);
|
||||
$event = $transaction->getEvent();
|
||||
} else {
|
||||
$transaction = null;
|
||||
$eventSlug = Container::$request->query('event');
|
||||
if ($eventSlug) {
|
||||
$event = $this->eventRepository->getBySlug($eventSlug);
|
||||
} else {
|
||||
$event = null;
|
||||
}
|
||||
}
|
||||
|
||||
return new HtmlContent('communities/transaction_edit', [
|
||||
'community' => $this->community,
|
||||
'transaction' => $transaction,
|
||||
'event' => $event,
|
||||
'members' => $this->getMembers($this->community),
|
||||
'currencies' => $this->getCurrencies($this->community)
|
||||
]);
|
||||
@@ -121,6 +152,7 @@ class TransactionController implements IAuthenticationRequired, ISecured
|
||||
$transaction->setCommunity($this->community);
|
||||
}
|
||||
|
||||
$transaction->setEventId(Container::$request->post('event_id') ?: null);
|
||||
$transaction->setCurrencyId(Container::$request->post('currency_id'));
|
||||
$transaction->setPayerUserId(Container::$request->post('payer_user_id'));
|
||||
$transaction->setPayeeUserId(Container::$request->post('payee_user_id') ?: null);
|
||||
@@ -143,7 +175,7 @@ class TransactionController implements IAuthenticationRequired, ISecured
|
||||
private function getMembers(Community $community): array
|
||||
{
|
||||
$members = iterator_to_array($this->communityMemberRepository->getAllByCommunity($community, true, ['user']));
|
||||
usort($members, function($a, $b) {
|
||||
usort($members, function ($a, $b) {
|
||||
return strnatcmp($a->getUser()->getDisplayName(), $b->getUser()->getDisplayName());
|
||||
});
|
||||
return $members;
|
||||
@@ -152,10 +184,10 @@ class TransactionController implements IAuthenticationRequired, ISecured
|
||||
private function getCurrencies(Community $community): array
|
||||
{
|
||||
$currencies = iterator_to_array($this->currencyRepository->getAllByCommunity($community));
|
||||
usort($currencies, function($a, $b) {
|
||||
usort($currencies, function ($a, $b) {
|
||||
return strnatcmp($a->getCode(), $b->getCode());
|
||||
});
|
||||
usort($currencies, function($a, $b) use ($community) {
|
||||
usort($currencies, function ($a, $b) use ($community) {
|
||||
return (int)($b->getId() === $community->getMainCurrencyId()) - (int)($a->getId() === $community->getMainCurrencyId());
|
||||
});
|
||||
return $currencies;
|
||||
|
||||
Reference in new issue
Block a user