mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2026-03-03 20:49:41 +00:00
Add user-based filtering support to Audit Trail search functionality
- Extended `AuditTrailRepository` to include user-based query filtering. - Updated `AuditTrailSearchController` to handle `by_users` filter criteria. - Modified translations and templates to support the new user picker field in the search form. - Injected required CSS and JS assets for the user picker functionality.
This commit is contained in:
@@ -13,6 +13,7 @@ namespace Chill\MainBundle\Repository;
|
||||
|
||||
use Chill\MainBundle\Audit\Subject;
|
||||
use Chill\MainBundle\Entity\AuditTrail;
|
||||
use Chill\MainBundle\Entity\User;
|
||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||
use Doctrine\DBAL\Types\Types;
|
||||
use Doctrine\ORM\QueryBuilder;
|
||||
@@ -61,7 +62,7 @@ class AuditTrailRepository extends ServiceEntityRepository
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array{} $criteria
|
||||
* @param array{subjects?: list<Subject>, from_date?: \DateTimeImmutable, to_date?: \DateTimeImmutable, by_users?: list<User>} $criteria
|
||||
*
|
||||
* @return array<AuditTrail>
|
||||
*/
|
||||
@@ -75,11 +76,12 @@ class AuditTrailRepository extends ServiceEntityRepository
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array{subjects?: list<Subject>, from_date?: \DateTimeImmutable, to_date?: \DateTimeImmutable} $criteria
|
||||
* @param array{subjects?: list<Subject>, from_date?: \DateTimeImmutable, to_date?: \DateTimeImmutable, by_users?: list<User>} $criteria
|
||||
*/
|
||||
private function buildByCriteriaQuery(array $criteria): QueryBuilder
|
||||
{
|
||||
$qb = $this->createQueryBuilder('audit');
|
||||
$k = 0;
|
||||
|
||||
if (null !== $fromDate = $criteria['from_date'] ?? null) {
|
||||
$qb->andWhere('audit.occurredAt >= :from_date');
|
||||
@@ -93,7 +95,6 @@ class AuditTrailRepository extends ServiceEntityRepository
|
||||
|
||||
if ([] !== $subjects = $criteria['subjects'] ?? []) {
|
||||
$orx = $qb->expr()->orX();
|
||||
$k = 0;
|
||||
foreach ($subjects as $subject) {
|
||||
$orx->add($qb->expr()->eq('audit.mainSubject', ':subject_'.$k));
|
||||
$qb->setParameter('subject_'.$k, $subject->asArray(), Types::JSON);
|
||||
@@ -105,6 +106,16 @@ class AuditTrailRepository extends ServiceEntityRepository
|
||||
$qb->andWhere($orx);
|
||||
}
|
||||
|
||||
if ([] !== $users = $criteria['by_users'] ?? []) {
|
||||
$orx = $qb->expr()->orX();
|
||||
foreach ($users as $user) {
|
||||
$orx->add($qb->expr()->eq('audit.user', ':user_'.$k));
|
||||
$qb->setParameter('user_'.$k, $user);
|
||||
++$k;
|
||||
}
|
||||
$qb->andWhere($orx);
|
||||
}
|
||||
|
||||
return $qb;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user