diff --git a/src/Bundle/ChillMainBundle/Controller/AuditTrailSearchController.php b/src/Bundle/ChillMainBundle/Controller/AuditTrailSearchController.php index 23e77b17b..d15637827 100644 --- a/src/Bundle/ChillMainBundle/Controller/AuditTrailSearchController.php +++ b/src/Bundle/ChillMainBundle/Controller/AuditTrailSearchController.php @@ -12,6 +12,7 @@ declare(strict_types=1); namespace Chill\MainBundle\Controller; use Chill\MainBundle\Audit\Subject; +use Chill\MainBundle\Pagination\PaginatorFactoryInterface; use Chill\MainBundle\Repository\AuditTrailRepository; use Chill\MainBundle\Templating\Listing\FilterOrderHelper; use Chill\MainBundle\Templating\Listing\FilterOrderHelperFactoryInterface; @@ -29,6 +30,7 @@ final class AuditTrailSearchController private AuditTrailRepository $auditTrailRepository, private FilterOrderHelperFactoryInterface $filterOrderHelperFactory, private Environment $twig, + private PaginatorFactoryInterface $paginatorFactory, ) {} #[Route('/{_locale}/main/audit-trail/list', name: 'chill_main_audit_trail_list')] @@ -36,11 +38,16 @@ final class AuditTrailSearchController { $filter = $this->buildFilter(); $criteria = $this->buildFilterCriteria($filter); - $auditTrails = $this->auditTrailRepository->findByCriteria($criteria); + + $count = $this->auditTrailRepository->countByCriteria($criteria); + $pagination = $this->paginatorFactory->create($count); + $pagination->setItemsPerPage(100); + $auditTrails = $this->auditTrailRepository->findByCriteria($criteria, offset: $pagination->getCurrentPageFirstItemNumber(), limit: $pagination->getItemsPerPage()); return new Response($this->twig->render('@ChillMain/AuditTrail/list.html.twig', [ 'auditTrails' => $auditTrails, 'filter' => $filter, + 'pagination' => $pagination, ])); } diff --git a/src/Bundle/ChillMainBundle/Repository/AuditTrailRepository.php b/src/Bundle/ChillMainBundle/Repository/AuditTrailRepository.php index 873c21130..b839be1d4 100644 --- a/src/Bundle/ChillMainBundle/Repository/AuditTrailRepository.php +++ b/src/Bundle/ChillMainBundle/Repository/AuditTrailRepository.php @@ -75,6 +75,16 @@ class AuditTrailRepository extends ServiceEntityRepository ->getQuery()->getResult(); } + /** + * @param array{subjects?: list, from_date?: \DateTimeImmutable, to_date?: \DateTimeImmutable, by_users?: list} $criteria + */ + public function countByCriteria(array $criteria): int + { + return $this->buildByCriteriaQuery($criteria) + ->select('COUNT(audit)') + ->getQuery()->getSingleScalarResult(); + } + /** * @param array{subjects?: list, from_date?: \DateTimeImmutable, to_date?: \DateTimeImmutable, by_users?: list} $criteria */ diff --git a/src/Bundle/ChillMainBundle/Resources/views/AuditTrail/list.html.twig b/src/Bundle/ChillMainBundle/Resources/views/AuditTrail/list.html.twig index 6cbfe9aec..1991b11e5 100644 --- a/src/Bundle/ChillMainBundle/Resources/views/AuditTrail/list.html.twig +++ b/src/Bundle/ChillMainBundle/Resources/views/AuditTrail/list.html.twig @@ -22,4 +22,6 @@ {{ include('@ChillMain/AuditTrail/_list_item.html.twig') }} {% endfor %} + + {{ chill_pagination(pagination) }} {% endblock %}