selectFromDbById($id, Transaction::class); } public function getAllByCommunity(Community $community, bool $useRelations = false, array $withRelations = []): Generator { $select = $this->selectAllByCommunity($community); yield from Container::$persistentDataManager->selectMultipleFromDb($select, Transaction::class, $useRelations, $withRelations); } public function getAllByEvent(Event $event, bool $useRelations = false, array $withRelations = []): Generator { $select = $this->selectAllByEvent($event); yield from Container::$persistentDataManager->selectMultipleFromDb($select, Transaction::class, $useRelations, $withRelations); } public function countAllByCommunity(Community $community): int { return $this->selectAllByCommunity($community)->count(); } public function countAllByEvent(Event $event): int { return $this->selectAllByEvent($event)->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 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 $page, int $itemsPerPage, bool $useRelations = false, array $withRelations = []): Generator { $select = $this->selectAllByCommunity($community); $select->orderBy('time', 'DESC'); $select->paginate($page, $itemsPerPage); yield from Container::$persistentDataManager->selectMultipleFromDb($select, Transaction::class, $useRelations, $withRelations); } public function getPagedByEvent(Event $event, int $page, int $itemsPerPage, bool $useRelations = false, array $withRelations = []): Generator { $select = $this->selectAllByEvent($event); $select->orderBy('time', 'DESC'); $select->paginate($page, $itemsPerPage); yield from Container::$persistentDataManager->selectMultipleFromDb($select, Transaction::class, $useRelations, $withRelations); } private function selectAllByCommunity(Community $community) { $select = new Select(Container::$dbConnection, Transaction::getTable()); $select->where('community_id', '=', $community->getId()); return $select; } private function selectAllByEvent(Event $event) { $select = new Select(Container::$dbConnection, Transaction::getTable()); $select->where('event_id', '=', $event->getId()); return $select; } }