From e59f9e9d98134cf6331d6925dbac9b3a6a15651d Mon Sep 17 00:00:00 2001 From: numew Date: Thu, 8 Jan 2026 17:37:20 +0100 Subject: [PATCH 1/3] correction des recherche libre contenant des nombres #5226 --- src/DataFixtures/Files/NewSignalement.yml | 2 +- src/Service/Signalement/SearchFilter.php | 8 ++++---- .../Controller/Back/SignalementListControllerTest.php | 1 + 3 files changed, 6 insertions(+), 5 deletions(-) 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..0ac613950a 100755 --- a/src/Service/Signalement/SearchFilter.php +++ b/src/Service/Signalement/SearchFilter.php @@ -86,12 +86,12 @@ 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('/^([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 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]; From de454b00527c266be3c769489c15ca04cda1f493 Mon Sep 17 00:00:00 2001 From: numew Date: Mon, 12 Jan 2026 10:26:12 +0100 Subject: [PATCH 2/3] add specific search for injonction #5226 --- src/Service/Signalement/SearchFilter.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/Service/Signalement/SearchFilter.php b/src/Service/Signalement/SearchFilter.php index 0ac613950a..f05a70397a 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; @@ -89,6 +90,11 @@ public function applyFilters(QueryBuilder $qb, array $filters, User $user): Quer if (preg_match('/^([0-9]{4})-[0-9]{1,6}$/', mb_trim($filters['searchterms']))) { $qb->andWhere('s.reference = :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 ('INJ-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', mb_trim($filters['searchterms'])); From a4cd7e4a188f66c3fef8274f70769ad64c8ff759 Mon Sep 17 00:00:00 2001 From: numew Date: Wed, 14 Jan 2026 09:59:59 +0100 Subject: [PATCH 3/3] add search by nom_delcarant #5226 --- src/Service/Signalement/SearchFilter.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Service/Signalement/SearchFilter.php b/src/Service/Signalement/SearchFilter.php index f05a70397a..6da62c4f33 100755 --- a/src/Service/Signalement/SearchFilter.php +++ b/src/Service/Signalement/SearchFilter.php @@ -93,7 +93,7 @@ public function applyFilters(QueryBuilder $qb, array $filters, User $user): Quer } 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 ('INJ-XXXX' === mb_strtoupper($filters['searchterms'])) { // top secret + } 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'); @@ -105,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'])).'%'); } }