diff --git a/dossierfacile-bo/src/main/java/fr/gouv/bo/controller/BOTenantController.java b/dossierfacile-bo/src/main/java/fr/gouv/bo/controller/BOTenantController.java index d7d2b15e9..c8600e82d 100644 --- a/dossierfacile-bo/src/main/java/fr/gouv/bo/controller/BOTenantController.java +++ b/dossierfacile-bo/src/main/java/fr/gouv/bo/controller/BOTenantController.java @@ -214,22 +214,10 @@ public String processFile( CustomMessage customMessage, @AuthenticationPrincipal UserPrincipal principal ) { - tenantService.processFile(id, customMessage, principal); - - // Si returnToHome est demandé, retourner à l'accueil + tenantService.processFile(id, customMessage, principal); if (returnToHome != null && returnToHome.equals("true")) { return REDIRECT_BO; } - - // Trouver le prochain tenant du même dossier COUPLE en statut TO_PROCESS - // pour router les locataires d'un meme dossier COUPLE vers le même opérateur - Optional nextTenantInCouple = tenantService.findNextTenantInCouple(id); - if (nextTenantInCouple.isPresent()) { - // Rediriger vers le prochain locataire du dossier - return tenantService.redirectToApplication(principal, nextTenantInCouple.get().getId()); - } - - // Sinon, continuer avec le comportement normal (prochain dossier disponible) return tenantService.redirectToApplication(principal, null); } diff --git a/dossierfacile-bo/src/main/java/fr/gouv/bo/service/TenantService.java b/dossierfacile-bo/src/main/java/fr/gouv/bo/service/TenantService.java index e12de8d3c..c871b2792 100644 --- a/dossierfacile-bo/src/main/java/fr/gouv/bo/service/TenantService.java +++ b/dossierfacile-bo/src/main/java/fr/gouv/bo/service/TenantService.java @@ -883,33 +883,5 @@ public Tenant deleteGuarantor(Long guarantorId, User operator) { updateTenantStatus(tenant, operator); return tenant; } - - /** - * Trouve le prochain tenant de la meme dossier COUPLE (apartment sharing) en statut TO_PROCESS - * pour router les locataires d'un meme dossier COUPLE vers le même opérateur - */ - public Optional findNextTenantInCouple(Long currentTenantId) { - Tenant currentTenant = find(currentTenantId); - if (currentTenant == null) { - return Optional.empty(); - } - - ApartmentSharing apartmentSharing = currentTenant.getApartmentSharing(); - if (apartmentSharing == null) { - return Optional.empty(); - } - - if (apartmentSharing.getApplicationType() != ApplicationType.COUPLE) { - return Optional.empty(); - } - - List allTenants = tenantRepository.findAllByApartmentSharingId( - currentTenant.getApartmentSharing().getId()); - - return allTenants.stream() - .filter(tenant -> !tenant.getId().equals(currentTenantId)) - .filter(tenant -> tenant.getStatus() == TenantFileStatus.TO_PROCESS) - .findFirst(); - } } diff --git a/dossierfacile-bo/src/test/java/fr/gouv/bo/service/TenantServiceFindNextTenantInCoupleTest.java b/dossierfacile-bo/src/test/java/fr/gouv/bo/service/TenantServiceFindNextTenantInCoupleTest.java deleted file mode 100644 index 3436c3759..000000000 --- a/dossierfacile-bo/src/test/java/fr/gouv/bo/service/TenantServiceFindNextTenantInCoupleTest.java +++ /dev/null @@ -1,240 +0,0 @@ -package fr.gouv.bo.service; - -import fr.dossierfacile.common.entity.ApartmentSharing; -import fr.dossierfacile.common.entity.Tenant; -import fr.dossierfacile.common.enums.ApplicationType; -import fr.dossierfacile.common.enums.TenantFileStatus; -import fr.dossierfacile.common.repository.TenantCommonRepository; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; - -import java.util.List; -import java.util.Optional; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -class TenantServiceFindNextTenantInCoupleTest { - - private static final Long CURRENT_TENANT_ID = 1L; - private static final Long OTHER_TENANT_ID = 2L; - private static final Long APARTMENT_SHARING_ID = 100L; - - private TenantCommonRepository tenantRepository; - private TenantService tenantService; - - @BeforeEach - void setUp() { - tenantRepository = mock(TenantCommonRepository.class); - tenantService = new TenantService( - tenantRepository, - null, // mailService - null, // partnerCallBackService - null, // userService - null, // messageSource - null, // documentRepository - null, // documentDeniedReasonsRepository - null, // messageService - null, // apartmentSharingRepository - null, // operatorLogRepository - null, // documentDeniedReasonsService - null, // documentService - null, // tenantLogService - null, // keycloakService - null, // apartmentSharingService - null, // guarantorRepository - null, // tenantMapperForMail - null, // apartmentSharingMapperForMail - null, // tenantCommonService - null // tenantLogCommonService - ); - } - - @Nested - class FindNextTenantInCouple { - - @Test - void should_throw_npe_when_tenant_is_null() { - when(tenantRepository.findOneById(CURRENT_TENANT_ID)).thenReturn(null); - - Optional result = tenantService.findNextTenantInCouple(CURRENT_TENANT_ID); - - assertThat(result).isEmpty(); - } - - @Test - void should_return_empty_when_apartment_sharing_is_null() { - Tenant currentTenant = Tenant.builder() - .id(CURRENT_TENANT_ID) - .apartmentSharing(null) - .build(); - when(tenantRepository.findOneById(CURRENT_TENANT_ID)).thenReturn(currentTenant); - - Optional result = tenantService.findNextTenantInCouple(CURRENT_TENANT_ID); - - assertThat(result).isEmpty(); - } - - @Test - void should_return_empty_when_application_type_is_alone() { - ApartmentSharing apartmentSharing = ApartmentSharing.builder() - .id(APARTMENT_SHARING_ID) - .applicationType(ApplicationType.ALONE) - .build(); - Tenant currentTenant = Tenant.builder() - .id(CURRENT_TENANT_ID) - .apartmentSharing(apartmentSharing) - .build(); - when(tenantRepository.findOneById(CURRENT_TENANT_ID)).thenReturn(currentTenant); - - Optional result = tenantService.findNextTenantInCouple(CURRENT_TENANT_ID); - - assertThat(result).isEmpty(); - } - - @Test - void should_return_empty_when_application_type_is_group() { - ApartmentSharing apartmentSharing = ApartmentSharing.builder() - .id(APARTMENT_SHARING_ID) - .applicationType(ApplicationType.GROUP) - .build(); - Tenant currentTenant = Tenant.builder() - .id(CURRENT_TENANT_ID) - .apartmentSharing(apartmentSharing) - .build(); - when(tenantRepository.findOneById(CURRENT_TENANT_ID)).thenReturn(currentTenant); - - Optional result = tenantService.findNextTenantInCouple(CURRENT_TENANT_ID); - - assertThat(result).isEmpty(); - } - - @Test - void should_return_next_tenant_when_couple_has_another_tenant_in_to_process() { - ApartmentSharing apartmentSharing = ApartmentSharing.builder() - .id(APARTMENT_SHARING_ID) - .applicationType(ApplicationType.COUPLE) - .build(); - Tenant currentTenant = Tenant.builder() - .id(CURRENT_TENANT_ID) - .apartmentSharing(apartmentSharing) - .status(TenantFileStatus.VALIDATED) - .build(); - Tenant otherTenant = Tenant.builder() - .id(OTHER_TENANT_ID) - .apartmentSharing(apartmentSharing) - .status(TenantFileStatus.TO_PROCESS) - .build(); - - when(tenantRepository.findOneById(CURRENT_TENANT_ID)).thenReturn(currentTenant); - when(tenantRepository.findAllByApartmentSharingId(APARTMENT_SHARING_ID)) - .thenReturn(List.of(currentTenant, otherTenant)); - - Optional result = tenantService.findNextTenantInCouple(CURRENT_TENANT_ID); - - assertThat(result).isPresent(); - assertThat(result.get().getId()).isEqualTo(OTHER_TENANT_ID); - } - - @Test - void should_return_empty_when_no_other_tenant_in_to_process() { - ApartmentSharing apartmentSharing = ApartmentSharing.builder() - .id(APARTMENT_SHARING_ID) - .applicationType(ApplicationType.COUPLE) - .build(); - Tenant currentTenant = Tenant.builder() - .id(CURRENT_TENANT_ID) - .apartmentSharing(apartmentSharing) - .status(TenantFileStatus.TO_PROCESS) - .build(); - Tenant otherTenant = Tenant.builder() - .id(OTHER_TENANT_ID) - .apartmentSharing(apartmentSharing) - .status(TenantFileStatus.VALIDATED) - .build(); - - when(tenantRepository.findOneById(CURRENT_TENANT_ID)).thenReturn(currentTenant); - when(tenantRepository.findAllByApartmentSharingId(APARTMENT_SHARING_ID)) - .thenReturn(List.of(currentTenant, otherTenant)); - - Optional result = tenantService.findNextTenantInCouple(CURRENT_TENANT_ID); - - assertThat(result).isEmpty(); - } - - @Test - void should_return_empty_when_other_tenant_status_is_declined() { - ApartmentSharing apartmentSharing = ApartmentSharing.builder() - .id(APARTMENT_SHARING_ID) - .applicationType(ApplicationType.COUPLE) - .build(); - Tenant currentTenant = Tenant.builder() - .id(CURRENT_TENANT_ID) - .apartmentSharing(apartmentSharing) - .status(TenantFileStatus.TO_PROCESS) - .build(); - Tenant otherTenant = Tenant.builder() - .id(OTHER_TENANT_ID) - .apartmentSharing(apartmentSharing) - .status(TenantFileStatus.DECLINED) - .build(); - - when(tenantRepository.findOneById(CURRENT_TENANT_ID)).thenReturn(currentTenant); - when(tenantRepository.findAllByApartmentSharingId(APARTMENT_SHARING_ID)) - .thenReturn(List.of(currentTenant, otherTenant)); - - Optional result = tenantService.findNextTenantInCouple(CURRENT_TENANT_ID); - - assertThat(result).isEmpty(); - } - - @Test - void should_return_empty_when_other_tenant_status_is_incomplete() { - ApartmentSharing apartmentSharing = ApartmentSharing.builder() - .id(APARTMENT_SHARING_ID) - .applicationType(ApplicationType.COUPLE) - .build(); - Tenant currentTenant = Tenant.builder() - .id(CURRENT_TENANT_ID) - .apartmentSharing(apartmentSharing) - .status(TenantFileStatus.TO_PROCESS) - .build(); - Tenant otherTenant = Tenant.builder() - .id(OTHER_TENANT_ID) - .apartmentSharing(apartmentSharing) - .status(TenantFileStatus.INCOMPLETE) - .build(); - - when(tenantRepository.findOneById(CURRENT_TENANT_ID)).thenReturn(currentTenant); - when(tenantRepository.findAllByApartmentSharingId(APARTMENT_SHARING_ID)) - .thenReturn(List.of(currentTenant, otherTenant)); - - Optional result = tenantService.findNextTenantInCouple(CURRENT_TENANT_ID); - - assertThat(result).isEmpty(); - } - - @Test - void should_return_empty_when_only_current_tenant_exists() { - ApartmentSharing apartmentSharing = ApartmentSharing.builder() - .id(APARTMENT_SHARING_ID) - .applicationType(ApplicationType.COUPLE) - .build(); - Tenant currentTenant = Tenant.builder() - .id(CURRENT_TENANT_ID) - .apartmentSharing(apartmentSharing) - .status(TenantFileStatus.TO_PROCESS) - .build(); - - when(tenantRepository.findOneById(CURRENT_TENANT_ID)).thenReturn(currentTenant); - when(tenantRepository.findAllByApartmentSharingId(APARTMENT_SHARING_ID)) - .thenReturn(List.of(currentTenant)); - - Optional result = tenantService.findNextTenantInCouple(CURRENT_TENANT_ID); - - assertThat(result).isEmpty(); - } - } -}