mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2026-03-03 04:29:40 +00:00
Add pagination support to Audit Trail listing
- Added `countByCriteria` method in `AuditTrailRepository` to retrieve the total count of records based on criteria. - Injected `PaginatorFactoryInterface` into `AuditTrailSearchController` and updated the controller to handle pagination logic. - Updated the `list.html.twig` template to render the pagination controls using `chill_pagination`.
This commit is contained in:
@@ -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,
|
||||
]));
|
||||
}
|
||||
|
||||
|
||||
@@ -75,6 +75,16 @@ class AuditTrailRepository extends ServiceEntityRepository
|
||||
->getQuery()->getResult();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array{subjects?: list<Subject>, from_date?: \DateTimeImmutable, to_date?: \DateTimeImmutable, by_users?: list<User>} $criteria
|
||||
*/
|
||||
public function countByCriteria(array $criteria): int
|
||||
{
|
||||
return $this->buildByCriteriaQuery($criteria)
|
||||
->select('COUNT(audit)')
|
||||
->getQuery()->getSingleScalarResult();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array{subjects?: list<Subject>, from_date?: \DateTimeImmutable, to_date?: \DateTimeImmutable, by_users?: list<User>} $criteria
|
||||
*/
|
||||
|
||||
@@ -22,4 +22,6 @@
|
||||
{{ include('@ChillMain/AuditTrail/_list_item.html.twig') }}
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
{{ chill_pagination(pagination) }}
|
||||
{% endblock %}
|
||||
|
||||
Reference in New Issue
Block a user