diff --git a/src/DataFixtures/Files/NewSignalement.yml b/src/DataFixtures/Files/NewSignalement.yml index 6e9bd64fba..13a9c15273 100644 --- a/src/DataFixtures/Files/NewSignalement.yml +++ b/src/DataFixtures/Files/NewSignalement.yml @@ -408,7 +408,7 @@ signalements: prenom_occupant: "Georges" tel_occupant: "+330240556677" phone_number: "+330240556677" - mail_occupant: "georges.brassens@yopmail.com" + mail_occupant: "georges.brassens34300@yopmail.com" adresse_occupant: "240 Avenue Victor Hugo" cp_occupant: "34300" ville_occupant: "AGDE" diff --git a/src/Service/Signalement/SearchFilter.php b/src/Service/Signalement/SearchFilter.php index 74f083cad2..6da62c4f33 100755 --- a/src/Service/Signalement/SearchFilter.php +++ b/src/Service/Signalement/SearchFilter.php @@ -18,6 +18,7 @@ use App\Repository\SuiviRepository; use App\Repository\TerritoryRepository; use App\Service\DashboardTabPanel\TabDossier; +use App\Service\InjonctionBailleur\InjonctionBailleurService; use App\Utils\CommuneHelper; use App\Utils\ImportCommune; use Doctrine\Common\Collections\ArrayCollection; @@ -86,12 +87,17 @@ public function buildFilters(User $user): array public function applyFilters(QueryBuilder $qb, array $filters, User $user): QueryBuilder { if (!empty($filters['searchterms'])) { - if (preg_match('/([0-9]{4})-[0-9]{0,6}/', $filters['searchterms'])) { + if (preg_match('/^([0-9]{4})-[0-9]{1,6}$/', mb_trim($filters['searchterms']))) { $qb->andWhere('s.reference = :searchterms'); - $qb->setParameter('searchterms', $filters['searchterms']); - } elseif (preg_match('/([0-9]{5})/', $filters['searchterms'])) { + $qb->setParameter('searchterms', mb_trim($filters['searchterms'])); + } elseif (preg_match('/^'.InjonctionBailleurService::REFERENCE_PREFIX.'[0-9]{4,}$/', mb_strtoupper(mb_trim($filters['searchterms'])))) { + $qb->andWhere('s.referenceInjonction = :searchterms'); + $qb->setParameter('searchterms', str_replace(InjonctionBailleurService::REFERENCE_PREFIX, '', mb_strtoupper(mb_trim($filters['searchterms'])))); + } elseif (InjonctionBailleurService::REFERENCE_PREFIX.'XXXX' === mb_strtoupper($filters['searchterms'])) { // top secret + $qb->andWhere('s.referenceInjonction IS NOT NULL'); + } elseif (preg_match('/^([0-9]{5})$/', mb_trim($filters['searchterms']))) { $qb->andWhere('s.cpOccupant = :searchterms'); - $qb->setParameter('searchterms', $filters['searchterms']); + $qb->setParameter('searchterms', mb_trim($filters['searchterms'])); } else { $qb->andWhere('LOWER(s.nomOccupant) LIKE :searchterms OR LOWER(s.prenomOccupant) LIKE :searchterms @@ -99,7 +105,8 @@ public function applyFilters(QueryBuilder $qb, array $filters, User $user): Quer OR LOWER(s.reference) LIKE :searchterms OR LOWER(s.adresseOccupant) LIKE :searchterms OR LOWER(s.villeOccupant) LIKE :searchterms - OR LOWER(s.nomProprio) LIKE :searchterms'); + OR LOWER(s.nomProprio) LIKE :searchterms + OR LOWER(s.nomDeclarant) LIKE :searchterms'); $qb->setParameter('searchterms', '%'.mb_trim(strtolower($filters['searchterms'])).'%'); } } diff --git a/tests/Functional/Controller/Back/SignalementListControllerTest.php b/tests/Functional/Controller/Back/SignalementListControllerTest.php index b37d66b8c0..e1c91fe9a3 100644 --- a/tests/Functional/Controller/Back/SignalementListControllerTest.php +++ b/tests/Functional/Controller/Back/SignalementListControllerTest.php @@ -52,6 +52,7 @@ public function provideNewFilterSearch(): \Generator yield 'Search Terms with Firstname Occupant' => [['searchTerms' => 'Mapaire', 'isImported' => 'oui'], 1]; yield 'Search Terms with Lastname Occupant' => [['searchTerms' => 'Nawell', 'isImported' => 'oui'], 2]; yield 'Search Terms with Email Occupant' => [['searchTerms' => 'nawell.mapaire@yopmail.com', 'isImported' => 'oui'], 1]; + yield 'Search Terms with Email Occupant containing numbers' => [['searchTerms' => 'georges.brassens34300@yopmail.com', 'isImported' => 'oui'], 1]; yield 'Search by Territory 13' => [['territoire' => '13', 'isImported' => 'oui'], 26]; yield 'Search by Commune' => [['communes' => ['gex', 'marseille'], 'isImported' => 'oui'], 31]; yield 'Search by Commune code postal' => [['communes' => ['13002'], 'isImported' => 'oui'], 2];