From 96798e761c62f2996104cbfa6ad4bda0792aa9c5 Mon Sep 17 00:00:00 2001 From: davdarras Date: Tue, 28 Jan 2025 12:32:14 +0100 Subject: [PATCH 1/3] fix: cache for su summaries --- pom.xml | 2 +- .../insee/queen/domain/pilotage/service/PilotageApiService.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 314587c4..3f43d202 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ Modules for queen back-office - 4.5.0 + 4.5.1 21 21 diff --git a/queen-domain-pilotage/src/main/java/fr/insee/queen/domain/pilotage/service/PilotageApiService.java b/queen-domain-pilotage/src/main/java/fr/insee/queen/domain/pilotage/service/PilotageApiService.java index 9eb2ae87..abbfabe6 100644 --- a/queen-domain-pilotage/src/main/java/fr/insee/queen/domain/pilotage/service/PilotageApiService.java +++ b/queen-domain-pilotage/src/main/java/fr/insee/queen/domain/pilotage/service/PilotageApiService.java @@ -146,7 +146,7 @@ public List getInterviewerCampaigns() { } @Override - @Cacheable(value = CacheName.HABILITATION, key = "{#surveyUnit.id, #surveyUnit.campaignId, #role, #idep}") + @Cacheable(value = CacheName.HABILITATION, key = "{#surveyUnit.id, #surveyUnit.campaign.id, #role, #idep}") public boolean hasHabilitation(SurveyUnitSummary surveyUnit, PilotageRole role, String idep) { return pilotageRepository.hasHabilitation(surveyUnit, role, idep); } From 4ee7694d741258aeb1caf8b30c96a6c131f9244b Mon Sep 17 00:00:00 2001 From: davdarras Date: Tue, 4 Feb 2025 10:10:33 +0100 Subject: [PATCH 2/3] feat: allow reviewer to see su data --- .../queen/application/surveyunit/controller/DataController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/queen-application/src/main/java/fr/insee/queen/application/surveyunit/controller/DataController.java b/queen-application/src/main/java/fr/insee/queen/application/surveyunit/controller/DataController.java index e9b39e75..2ecfab1a 100644 --- a/queen-application/src/main/java/fr/insee/queen/application/surveyunit/controller/DataController.java +++ b/queen-application/src/main/java/fr/insee/queen/application/surveyunit/controller/DataController.java @@ -60,7 +60,7 @@ public class DataController { @PreAuthorize(AuthorityPrivileges.HAS_USER_PRIVILEGES) @ApiResponse(responseCode = "200", content = {@Content(mediaType = "application/json", schema = @Schema(ref = SchemaType.Names.DATA))}) public ObjectNode getDataBySurveyUnit(@IdValid @PathVariable(value = "id") String surveyUnitId) { - pilotageComponent.checkHabilitations(surveyUnitId, PilotageRole.INTERVIEWER); + pilotageComponent.checkHabilitations(surveyUnitId, PilotageRole.INTERVIEWER, PilotageRole.REVIEWER); SurveyUnitSummary surveyUnitSummary = surveyUnitService.getSummaryById(surveyUnitId); // if campaign sensitivity is OFF, return data From 9e0c121a13f1ab07faac7c82e6fd262d842d199a Mon Sep 17 00:00:00 2001 From: davdarras Date: Tue, 4 Feb 2025 19:20:20 +0100 Subject: [PATCH 3/3] fix: add campaign id search for survey units --- .../surveyunit/controller/SurveyUnitController.java | 6 ++++-- .../surveyunit/integration/SurveyUnitTests.java | 4 ++-- .../surveyunit/service/dummy/SurveyUnitFakeService.java | 2 +- .../surveyunit/service/dummy/SurveyUnitFakeService.java | 2 +- .../domain/surveyunit/gateway/SurveyUnitRepository.java | 3 ++- .../domain/surveyunit/service/SurveyUnitApiService.java | 4 ++-- .../queen/domain/surveyunit/service/SurveyUnitService.java | 2 +- .../surveyunit/infrastructure/dummy/SurveyUnitFakeDao.java | 2 +- .../surveyunit/service/dummy/SurveyUnitFakeService.java | 2 +- .../db/surveyunit/repository/SurveyUnitDao.java | 4 ++-- .../surveyunit/repository/jpa/SurveyUnitJpaRepository.java | 7 +++++-- 11 files changed, 22 insertions(+), 16 deletions(-) diff --git a/queen-application/src/main/java/fr/insee/queen/application/surveyunit/controller/SurveyUnitController.java b/queen-application/src/main/java/fr/insee/queen/application/surveyunit/controller/SurveyUnitController.java index 9e890b11..7b1612e0 100644 --- a/queen-application/src/main/java/fr/insee/queen/application/surveyunit/controller/SurveyUnitController.java +++ b/queen-application/src/main/java/fr/insee/queen/application/surveyunit/controller/SurveyUnitController.java @@ -66,17 +66,19 @@ public List getSurveyUnitIds() { /** * Retrieve survey units filtered by state * + * @param campaignId campaign id * @param stateDataType state * @param pageNumber page to retrieve * @return all ids of survey units */ @Operation(summary = "Retrieve survey-units by state") - @PostMapping(path = "/survey-units") + @GetMapping(path = "/admin/campaign/{id}/survey-units") @PreAuthorize(AuthorityPrivileges.HAS_ADMIN_PRIVILEGES) public PagingResult getSurveyUnitsByState( + @IdValid @PathVariable("id") String campaignId, @RequestParam(name="state") StateDataType stateDataType, @RequestParam(defaultValue = "0") Integer pageNumber) { - return surveyUnitService.getSurveyUnits(stateDataType, pageNumber); + return surveyUnitService.getSurveyUnits(campaignId, stateDataType, pageNumber); } /** diff --git a/queen-application/src/test/java/fr/insee/queen/application/surveyunit/integration/SurveyUnitTests.java b/queen-application/src/test/java/fr/insee/queen/application/surveyunit/integration/SurveyUnitTests.java index 1d7578ce..0e150882 100644 --- a/queen-application/src/test/java/fr/insee/queen/application/surveyunit/integration/SurveyUnitTests.java +++ b/queen-application/src/test/java/fr/insee/queen/application/surveyunit/integration/SurveyUnitTests.java @@ -56,14 +56,14 @@ void on_get_survey_units_return_survey_units() throws Exception { "currentPage":"2.3#5" } }"""; - mockMvc.perform(post("/api/survey-units") + mockMvc.perform(get("/api/admin/campaign/SIMPSONS2020X00/survey-units") .accept(MediaType.APPLICATION_JSON) .param("state", StateDataTypeInput.INIT.name()) .with(authentication(authenticatedUserTestHelper.getAdminUser())) ) .andDo(print()) .andExpect(status().isOk()) - .andExpect(jsonPath("$.contents.size()", is(13))) + .andExpect(jsonPath("$.contents.size()", is(3))) // extract and check first element .andExpect(result -> { String responseContent = result.getResponse().getContentAsString(); diff --git a/queen-application/src/test/java/fr/insee/queen/application/surveyunit/service/dummy/SurveyUnitFakeService.java b/queen-application/src/test/java/fr/insee/queen/application/surveyunit/service/dummy/SurveyUnitFakeService.java index 9feb0a72..185149db 100644 --- a/queen-application/src/test/java/fr/insee/queen/application/surveyunit/service/dummy/SurveyUnitFakeService.java +++ b/queen-application/src/test/java/fr/insee/queen/application/surveyunit/service/dummy/SurveyUnitFakeService.java @@ -192,7 +192,7 @@ public List findAllSurveyUnits() { } @Override - public PagingResult getSurveyUnits(StateDataType stateDataType, Integer pageNumber) { + public PagingResult getSurveyUnits(String campaignId, StateDataType stateDataType, Integer pageNumber) { return null; } } diff --git a/queen-domain-pilotage/src/test/java/fr/insee/queen/domain/surveyunit/service/dummy/SurveyUnitFakeService.java b/queen-domain-pilotage/src/test/java/fr/insee/queen/domain/surveyunit/service/dummy/SurveyUnitFakeService.java index df696965..46595124 100644 --- a/queen-domain-pilotage/src/test/java/fr/insee/queen/domain/surveyunit/service/dummy/SurveyUnitFakeService.java +++ b/queen-domain-pilotage/src/test/java/fr/insee/queen/domain/surveyunit/service/dummy/SurveyUnitFakeService.java @@ -132,7 +132,7 @@ public List findAllSurveyUnits() { } @Override - public PagingResult getSurveyUnits(StateDataType stateDataType, Integer pageNumber) { + public PagingResult getSurveyUnits(String campaignId, StateDataType stateDataType, Integer pageNumber) { return null; } } diff --git a/queen-domain/src/main/java/fr/insee/queen/domain/surveyunit/gateway/SurveyUnitRepository.java b/queen-domain/src/main/java/fr/insee/queen/domain/surveyunit/gateway/SurveyUnitRepository.java index 7ee0be8c..85e657ad 100644 --- a/queen-domain/src/main/java/fr/insee/queen/domain/surveyunit/gateway/SurveyUnitRepository.java +++ b/queen-domain/src/main/java/fr/insee/queen/domain/surveyunit/gateway/SurveyUnitRepository.java @@ -61,11 +61,12 @@ public interface SurveyUnitRepository { /** * + * @param campaignId campaign id * @param stateDataType state data type to filter * @param pageNumber page number * @return pages of survey units with states */ - PagingResult findAllByState(StateDataType stateDataType, Integer pageNumber); + PagingResult findAllByState(String campaignId, StateDataType stateDataType, Integer pageNumber); /** * Find survey units with state linked by ids diff --git a/queen-domain/src/main/java/fr/insee/queen/domain/surveyunit/service/SurveyUnitApiService.java b/queen-domain/src/main/java/fr/insee/queen/domain/surveyunit/service/SurveyUnitApiService.java index 57b6543d..61fad24c 100644 --- a/queen-domain/src/main/java/fr/insee/queen/domain/surveyunit/service/SurveyUnitApiService.java +++ b/queen-domain/src/main/java/fr/insee/queen/domain/surveyunit/service/SurveyUnitApiService.java @@ -91,8 +91,8 @@ public List findAllSurveyUnitIds() { } @Override - public PagingResult getSurveyUnits(StateDataType stateDataType, Integer pageNumber) { - return surveyUnitRepository.findAllByState(stateDataType, pageNumber); + public PagingResult getSurveyUnits(String campaignId, StateDataType stateDataType, Integer pageNumber) { + return surveyUnitRepository.findAllByState(campaignId, stateDataType, pageNumber); } @Transactional diff --git a/queen-domain/src/main/java/fr/insee/queen/domain/surveyunit/service/SurveyUnitService.java b/queen-domain/src/main/java/fr/insee/queen/domain/surveyunit/service/SurveyUnitService.java index e11db7cb..f51ce1b8 100644 --- a/queen-domain/src/main/java/fr/insee/queen/domain/surveyunit/service/SurveyUnitService.java +++ b/queen-domain/src/main/java/fr/insee/queen/domain/surveyunit/service/SurveyUnitService.java @@ -45,5 +45,5 @@ public interface SurveyUnitService { List findAllSurveyUnits(); - PagingResult getSurveyUnits(StateDataType stateDataType, Integer pageNumber); + PagingResult getSurveyUnits(String campaignId, StateDataType stateDataType, Integer pageNumber); } diff --git a/queen-domain/src/test/java/fr/insee/queen/domain/surveyunit/infrastructure/dummy/SurveyUnitFakeDao.java b/queen-domain/src/test/java/fr/insee/queen/domain/surveyunit/infrastructure/dummy/SurveyUnitFakeDao.java index 323ecad7..90cd1700 100644 --- a/queen-domain/src/test/java/fr/insee/queen/domain/surveyunit/infrastructure/dummy/SurveyUnitFakeDao.java +++ b/queen-domain/src/test/java/fr/insee/queen/domain/surveyunit/infrastructure/dummy/SurveyUnitFakeDao.java @@ -56,7 +56,7 @@ public Optional> findAllIds() { } @Override - public PagingResult findAllByState(StateDataType stateDataType, Integer pageNumber) { + public PagingResult findAllByState(String campaignId, StateDataType stateDataType, Integer pageNumber) { return null; } diff --git a/queen-domain/src/test/java/fr/insee/queen/domain/surveyunit/service/dummy/SurveyUnitFakeService.java b/queen-domain/src/test/java/fr/insee/queen/domain/surveyunit/service/dummy/SurveyUnitFakeService.java index 5ee981c2..109f9589 100644 --- a/queen-domain/src/test/java/fr/insee/queen/domain/surveyunit/service/dummy/SurveyUnitFakeService.java +++ b/queen-domain/src/test/java/fr/insee/queen/domain/surveyunit/service/dummy/SurveyUnitFakeService.java @@ -134,7 +134,7 @@ public List findAllSurveyUnits() { } @Override - public PagingResult getSurveyUnits(StateDataType stateDataType, Integer pageNumber) { + public PagingResult getSurveyUnits(String campaignId, StateDataType stateDataType, Integer pageNumber) { return null; } } diff --git a/queen-infra-db/src/main/java/fr/insee/queen/infrastructure/db/surveyunit/repository/SurveyUnitDao.java b/queen-infra-db/src/main/java/fr/insee/queen/infrastructure/db/surveyunit/repository/SurveyUnitDao.java index b052fbd8..3cf458e3 100644 --- a/queen-infra-db/src/main/java/fr/insee/queen/infrastructure/db/surveyunit/repository/SurveyUnitDao.java +++ b/queen-infra-db/src/main/java/fr/insee/queen/infrastructure/db/surveyunit/repository/SurveyUnitDao.java @@ -79,12 +79,12 @@ public Optional> findAllIds() { } @Override - public PagingResult findAllByState(StateDataType state, Integer pageNumber) { + public PagingResult findAllByState(String campaignId, StateDataType state, Integer pageNumber) { Pageable pageable = PageRequest.of(pageNumber, 1000, Sort.by("id")); Page surveyUnitPages; - surveyUnitPages = crudRepository.findAllByState(state, pageable); + surveyUnitPages = crudRepository.findAllByState(campaignId, state, pageable); return new PagingResult<>(surveyUnitPages.toList(), surveyUnitPages.getNumber(), diff --git a/queen-infra-db/src/main/java/fr/insee/queen/infrastructure/db/surveyunit/repository/jpa/SurveyUnitJpaRepository.java b/queen-infra-db/src/main/java/fr/insee/queen/infrastructure/db/surveyunit/repository/jpa/SurveyUnitJpaRepository.java index ce0b23e0..def6bcaf 100644 --- a/queen-infra-db/src/main/java/fr/insee/queen/infrastructure/db/surveyunit/repository/jpa/SurveyUnitJpaRepository.java +++ b/queen-infra-db/src/main/java/fr/insee/queen/infrastructure/db/surveyunit/repository/jpa/SurveyUnitJpaRepository.java @@ -164,6 +164,7 @@ public interface SurveyUnitJpaRepository extends JpaRepository findAllByState(StateDataType stateDataType, Pageable pageable); + from SurveyUnitDB s left join s.stateData st + where st.state = :stateDataType + and s.campaign.id = :campaignId""") + Page findAllByState(String campaignId, StateDataType stateDataType, Pageable pageable); /** * Search survey units by ids