From 3f11a9d265e89de0a2440934852fa5325c1f1354 Mon Sep 17 00:00:00 2001
From: Passam KASSEM <passam.kassem@focati-solutions.com>
Date: Wed, 12 Jan 2022 00:32:45 +0100
Subject: [PATCH] =?UTF-8?q?[VAS]=20Bug=209353=20:=20Filtre=20par=20date=20?=
 =?UTF-8?q?de=20la=20recherche=20avanc=C3=A9e=20du=20registre=20des=20fond?=
 =?UTF-8?q?s?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../common/dsl/VitamQueryHelper.java          | 25 +++++++++----------
 ...cessionRegisterSummaryInternalService.java | 19 +++++++-------
 .../accession-register-list.component.ts      |  2 +-
 3 files changed, 23 insertions(+), 23 deletions(-)

diff --git a/api/api-referential/referential-commons/src/main/java/fr/gouv/vitamui/referential/common/dsl/VitamQueryHelper.java b/api/api-referential/referential-commons/src/main/java/fr/gouv/vitamui/referential/common/dsl/VitamQueryHelper.java
index 6c39c0f9c..42ac71b7a 100644
--- a/api/api-referential/referential-commons/src/main/java/fr/gouv/vitamui/referential/common/dsl/VitamQueryHelper.java
+++ b/api/api-referential/referential-commons/src/main/java/fr/gouv/vitamui/referential/common/dsl/VitamQueryHelper.java
@@ -50,8 +50,9 @@ import fr.gouv.vitamui.commons.api.domain.DirectionDto;
 import fr.gouv.vitamui.commons.api.logger.VitamUILogger;
 import fr.gouv.vitamui.commons.api.logger.VitamUILoggerFactory;
 
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.ZoneOffset;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
@@ -61,11 +62,9 @@ import java.util.Set;
 
 import static fr.gouv.vitam.common.database.builder.query.QueryHelper.and;
 import static fr.gouv.vitam.common.database.builder.query.QueryHelper.eq;
-import static fr.gouv.vitam.common.database.builder.query.QueryHelper.exists;
 import static fr.gouv.vitam.common.database.builder.query.QueryHelper.gt;
 import static fr.gouv.vitam.common.database.builder.query.QueryHelper.in;
 import static fr.gouv.vitam.common.database.builder.query.QueryHelper.lt;
-import static fr.gouv.vitam.common.database.builder.query.QueryHelper.lte;
 import static fr.gouv.vitam.common.database.builder.query.QueryHelper.matchPhrasePrefix;
 import static fr.gouv.vitam.common.database.builder.query.QueryHelper.ne;
 import static fr.gouv.vitam.common.database.builder.query.QueryHelper.nin;
@@ -286,24 +285,24 @@ public class VitamQueryHelper {
             ObjectMapper mapper = new ObjectMapper();
             AccessionRegisterDetailsSearchStatsDto.EndDateInterval dateInterval = mapper.convertValue(value, new TypeReference<>() {});
 
-            SimpleDateFormat formatter = new SimpleDateFormat(DATE_FORMAT);
+            DateTimeFormatter dtf = DateTimeFormatter.ofPattern(DATE_FORMAT).withZone(ZoneOffset.UTC);
             String dateMinStr = dateInterval.getEndDateMin();
             String dateMaxStr = dateInterval.getEndDateMax();
 
-            if(dateMinStr != null && dateMaxStr == null) {
-                query.add(lte(END_DATE, formatter.parse(dateMinStr)));
+            if (dateMinStr != null && dateMaxStr == null) {
+                query.add(range(END_DATE, LocalDate.parse(dateMinStr, dtf).toString(), true, LocalDate.now().toString(), true));
             }
 
-            if(dateMinStr == null && dateMaxStr != null) {
-                query.add(lte(END_DATE, formatter.parse(dateMaxStr)));
+            if (dateMinStr == null && dateMaxStr != null) {
+                query.add(range(END_DATE, LocalDate.now().toString(), true, LocalDate.parse(dateMaxStr, dtf).toString(), true));
             }
 
-            if(dateMinStr != null && dateMaxStr != null) {
-                query.add(range(END_DATE, formatter.parse(dateMinStr), true, formatter.parse(dateMaxStr), false));
+            if (dateMinStr != null && dateMaxStr != null) {
+                query.add(range(END_DATE, LocalDate.parse(dateMinStr, dtf).toString(), true, LocalDate.parse(dateMaxStr, dtf).toString(), true));
             }
 
-        } catch (InvalidCreateOperationException | ParseException e) {
-            LOGGER.error("Can not find binding for StartDate key: \n {}", e);
+        } catch (InvalidCreateOperationException e) {
+            LOGGER.error("Can not find binding for EndDate key: \n {}", e);
         }
 
     }
diff --git a/api/api-referential/referential-internal/src/main/java/fr/gouv/vitamui/referential/internal/server/accessionregister/summary/AccessionRegisterSummaryInternalService.java b/api/api-referential/referential-internal/src/main/java/fr/gouv/vitamui/referential/internal/server/accessionregister/summary/AccessionRegisterSummaryInternalService.java
index a0b3b9509..fedef9151 100644
--- a/api/api-referential/referential-internal/src/main/java/fr/gouv/vitamui/referential/internal/server/accessionregister/summary/AccessionRegisterSummaryInternalService.java
+++ b/api/api-referential/referential-internal/src/main/java/fr/gouv/vitamui/referential/internal/server/accessionregister/summary/AccessionRegisterSummaryInternalService.java
@@ -68,7 +68,9 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.text.ParseException;
-import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.ZoneOffset;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -80,7 +82,6 @@ import java.util.stream.Collectors;
 import static fr.gouv.vitam.common.database.builder.query.QueryHelper.and;
 import static fr.gouv.vitam.common.database.builder.query.QueryHelper.eq;
 import static fr.gouv.vitam.common.database.builder.query.QueryHelper.in;
-import static fr.gouv.vitam.common.database.builder.query.QueryHelper.lte;
 import static fr.gouv.vitam.common.database.builder.query.QueryHelper.ne;
 import static fr.gouv.vitam.common.database.builder.query.QueryHelper.nin;
 import static fr.gouv.vitam.common.database.builder.query.QueryHelper.range;
@@ -214,7 +215,7 @@ public class AccessionRegisterSummaryInternalService {
             query.add(in(STATUS, stringValues.toArray(new String[] {})));
         }
 
-        addStartDateToQuery(query, detailsSearchDto.getDateInterval());
+        addEndDateToQuery(query, detailsSearchDto.getDateInterval());
 
         if(detailsSearchDto.getAdvancedSearch() != null) {
             AccessionRegisterDetailsSearchStatsDto.AdvancedSearchData advancedSearch = detailsSearchDto.getAdvancedSearch();
@@ -254,24 +255,24 @@ public class AccessionRegisterSummaryInternalService {
         }
     }
 
-    private static void addStartDateToQuery(BooleanQuery query, AccessionRegisterDetailsSearchStatsDto.EndDateInterval dateInterval)
-        throws ParseException, InvalidCreateOperationException {
+    private static void addEndDateToQuery(BooleanQuery query, AccessionRegisterDetailsSearchStatsDto.EndDateInterval dateInterval)
+        throws InvalidCreateOperationException {
 
         if(dateInterval != null) {
-            SimpleDateFormat formatter = new SimpleDateFormat(DATE_FORMAT);
+            DateTimeFormatter dtf = DateTimeFormatter.ofPattern(DATE_FORMAT).withZone(ZoneOffset.UTC);
             String dateMinStr = dateInterval.getEndDateMin();
             String dateMaxStr = dateInterval.getEndDateMax();
 
             if (dateMinStr != null && dateMaxStr == null) {
-                query.add(lte(END_DATE, formatter.parse(dateMinStr)));
+                query.add(range(END_DATE, LocalDate.parse(dateMinStr, dtf).toString(), true, LocalDate.now().toString(), true));
             }
 
             if (dateMinStr == null && dateMaxStr != null) {
-                query.add(lte(END_DATE, formatter.parse(dateMaxStr)));
+                query.add(range(END_DATE, LocalDate.now().toString(), true, LocalDate.parse(dateMaxStr, dtf).toString(), true));
             }
 
             if (dateMinStr != null && dateMaxStr != null) {
-                query.add(range(END_DATE, formatter.parse(dateMinStr), true, formatter.parse(dateMaxStr), false));
+                query.add(range(END_DATE, LocalDate.parse(dateMinStr, dtf).toString(), true, LocalDate.parse(dateMaxStr, dtf).toString(), true));
             }
         }
     }
diff --git a/ui/ui-frontend/projects/referential/src/app/accession-register/accession-register-list/accession-register-list.component.ts b/ui/ui-frontend/projects/referential/src/app/accession-register/accession-register-list/accession-register-list.component.ts
index b4b70e38a..87f03c08f 100644
--- a/ui/ui-frontend/projects/referential/src/app/accession-register/accession-register-list/accession-register-list.component.ts
+++ b/ui/ui-frontend/projects/referential/src/app/accession-register/accession-register-list/accession-register-list.component.ts
@@ -56,7 +56,7 @@ export class AccessionRegisterListComponent extends InfiniteScrollTable<Accessio
 
   filterDebounceTimeMs = 400;
   direction = Direction.DESCENDANT;
-  orderBy = 'StartDate';
+  orderBy = 'EndDate';
 
   private filterChange = new BehaviorSubject<{ [key: string]: any[] }>({});
   private searchChange = new BehaviorSubject<string>(null);
-- 
GitLab