*/ class InvoiceTemplateRepository extends EntityRepository { public function hasTemplate(): bool { return $this->count([]) > 0; } public function getQueryBuilderForFormType(): QueryBuilder { $qb = $this->getEntityManager()->createQueryBuilder(); $qb->select('t') ->from(InvoiceTemplate::class, 't') ->orderBy('t.name'); return $qb; } private function getQueryBuilderForQuery(BaseQuery $query): QueryBuilder { $qb = $this->getEntityManager()->createQueryBuilder(); $qb->select('t') ->from(InvoiceTemplate::class, 't') ->orderBy('t.name'); return $qb; } protected function getPaginatorForQuery(BaseQuery $query): PaginatorInterface { $counter = $this->countTemplatesForQuery($query); $qb = $this->getQueryBuilderForQuery($query); return new QueryBuilderPaginator($qb, $counter); } public function getPagerfantaForQuery(BaseQuery $query): Pagination { return new Pagination($this->getPaginatorForQuery($query), $query); } public function countTemplatesForQuery(BaseQuery $query): int { $qb = $this->getQueryBuilderForQuery($query); $qb ->resetDQLPart('select') ->resetDQLPart('orderBy') ->select($qb->expr()->countDistinct('t.id')) ; return (int) $qb->getQuery()->getSingleScalarResult(); } public function saveTemplate(InvoiceTemplate $template): void { $this->getEntityManager()->persist($template); $this->getEntityManager()->flush(); } public function removeTemplate(InvoiceTemplate $template): void { $this->getEntityManager()->remove($template); $this->getEntityManager()->flush(); } }