1212import fr .insee .pearljam .api .repository .*;
1313import fr .insee .pearljam .api .service .SurveyUnitService ;
1414import fr .insee .pearljam .api .service .SurveyUnitUpdateService ;
15+ import java .util .function .Function ;
1516import fr .insee .pearljam .api .service .UserService ;
1617import fr .insee .pearljam .api .service .UtilsService ;
1718import fr .insee .pearljam .api .surveyunit .dto .ContactOutcomeDto ;
3637
3738import java .util .*;
3839import java .util .stream .Collectors ;
39- import java .util .stream .Stream ;
4040
4141/**
4242 * @author scorcaud
@@ -56,7 +56,6 @@ public class SurveyUnitServiceImpl implements SurveyUnitService {
5656 private final SurveyUnitRepository surveyUnitRepository ;
5757 private final SurveyUnitTempZoneRepository surveyUnitTempZoneRepository ;
5858 private final AddressRepository addressRepository ;
59- private final ContactOutcomeRepository contactOutcomeRepository ;
6059 private final StateRepository stateRepository ;
6160 private final InterviewerRepository interviewerRepository ;
6261 private final CampaignRepository campaignRepository ;
@@ -310,22 +309,33 @@ public List<SurveyUnitCampaignDto> getClosableSurveyUnits(HttpServletRequest req
310309 List <String > lstOuId = userService .getUserOUs (userId , true ).stream ().map (OrganizationUnitDto ::getId )
311310 .toList ();
312311
313- List <String > noIdentSurveyUnitIds = surveyUnitRepository
314- .findSurveyUnitIdsOfOrganizationUnitsInProcessingPhaseByIdentificationConfiguration (
315- System .currentTimeMillis (), lstOuId , IdentificationConfiguration .NOIDENT );
316- List <String > iascoSurveyUnitIds = surveyUnitRepository
317- .findSurveyUnitIdsOfOrganizationUnitsInProcessingPhaseByIdentificationConfiguration (
318- System .currentTimeMillis (), lstOuId , IdentificationConfiguration .IASCO );
319-
320- // apply different business rules to select SU
321- List <SurveyUnit > noIdentSurveyUnitsToCheck = surveyUnitRepository
322- .findClosableNoIdentSurveyUnitId (noIdentSurveyUnitIds );
323- List <SurveyUnit > iascoSurveyUnitsToCheck = surveyUnitRepository
324- .findClosableIascoSurveyUnitId (iascoSurveyUnitIds );
325-
326- // merge lists
327- List <SurveyUnit > suToCheck = Stream .concat (noIdentSurveyUnitsToCheck .stream (), iascoSurveyUnitsToCheck .stream ())
328- .toList ();
312+ // Retrieve SurveyUnitIds for each configuration
313+ Map <IdentificationConfiguration , List <String >> surveyUnitIdsByConfig = Arrays .stream (IdentificationConfiguration .values ())
314+ .collect (Collectors .toMap (
315+ config -> config ,
316+ config -> surveyUnitRepository .findSurveyUnitIdsOfOrganizationUnitsInProcessingPhaseByIdentificationConfiguration (
317+ System .currentTimeMillis (), lstOuId , config )
318+ ));
319+
320+ // Mapping between each configuration and the appropriate method to retrieve closable units
321+ Map <IdentificationConfiguration , Function <List <String >, List <SurveyUnit >>> closableSurveyUnitMethods = Map .of (
322+ IdentificationConfiguration .NOIDENT , surveyUnitRepository ::findClosableNoIdentSurveyUnitId ,
323+ IdentificationConfiguration .IASCO , surveyUnitRepository ::findClosableHousef2fSurveyUnitId ,
324+ IdentificationConfiguration .HOUSEF2F , surveyUnitRepository ::findClosableHousef2fSurveyUnitId ,
325+ IdentificationConfiguration .INDF2F , surveyUnitRepository ::findClosableIndf2fFSurveyUnitId ,
326+ IdentificationConfiguration .INDF2FNOR , surveyUnitRepository ::findClosableIndf2fnorFSurveyUnitId ,
327+ IdentificationConfiguration .INDTEL , surveyUnitRepository ::findClosableIndtelFSurveyUnitId ,
328+ IdentificationConfiguration .INDTELNOR , surveyUnitRepository ::findClosableIndtelnorFSurveyUnitId
329+ );
330+
331+
332+ // Retrieving SurveyUnits to check
333+ List <SurveyUnit > suToCheck = surveyUnitIdsByConfig .entrySet ().stream ()
334+ .flatMap (entry -> {
335+ IdentificationConfiguration config = entry .getKey ();
336+ List <String > surveyUnitIds = entry .getValue ();
337+ return closableSurveyUnitMethods .getOrDefault (config , ids -> List .of ()).apply (surveyUnitIds ).stream ();
338+ }).toList ();
329339
330340 Map <String , String > mapQuestionnaireStateBySu = Collections .emptyMap ();
331341
0 commit comments