diff --git a/dossierfacile-api-tenant/src/main/java/fr/dossierfacile/api/front/mapper/TenantMapper.java b/dossierfacile-api-tenant/src/main/java/fr/dossierfacile/api/front/mapper/TenantMapper.java index d8e5ee6e8..457b8f30f 100644 --- a/dossierfacile-api-tenant/src/main/java/fr/dossierfacile/api/front/mapper/TenantMapper.java +++ b/dossierfacile-api-tenant/src/main/java/fr/dossierfacile/api/front/mapper/TenantMapper.java @@ -46,7 +46,7 @@ public void setCategoriesMapper(CategoriesMapper categoriesMapper) { public abstract TenantModel toTenantModel(Tenant tenant, @Context UserApi userApi); @Mapping(target = "name", expression = "java((document.getWatermarkFile() != null )? applicationBaseUrl + \"/" + PATH + "/\" + document.getName() : null)") - @Mapping(target = "files", expression = "java(userApi == null ? mapFiles(document.getFiles()) : null)") + @Mapping(target = "files", expression = "java((userApi == null || isHybrid(userApi))? mapFiles(document.getFiles()) : null)") @MapDocumentCategories public abstract DocumentModel toDocumentModel(Document document, @Context UserApi userApi); @@ -61,8 +61,12 @@ public void setCategoriesMapper(CategoriesMapper categoriesMapper) { @Mapping(target = "originalName", source = "documentFile.storageFile.name") public abstract FileModel toFileModel(File documentFile); + boolean isHybrid(UserApi userApi) { + return userApi != null && userApi.getName().startsWith("hybrid-"); + } + @AfterMapping - void modificationsAfterMapping(@MappingTarget TenantModel.TenantModelBuilder tenantModelBuilder) { + void modificationsAfterMapping(@MappingTarget TenantModel.TenantModelBuilder tenantModelBuilder, @Context UserApi userApi) { TenantModel tenantModel = tenantModelBuilder.build(); ApartmentSharingModel apartmentSharingModel = tenantModel.getApartmentSharing(); if (apartmentSharingModel.getStatus() == TenantFileStatus.VALIDATED) { @@ -74,7 +78,7 @@ void modificationsAfterMapping(@MappingTarget TenantModel.TenantModelBuilder ten } var isDossierUser = SecurityContextHolder.getContext().getAuthentication().getAuthorities().contains(new SimpleGrantedAuthority("SCOPE_dossier")); var filePath = isDossierUser ? "/api/file/resource/" : "/api-partner/tenant/" + tenantModel.getId() + "/file/resource/"; - setDocumentDeniedReasonsAndDocumentAndFilesRoutes(tenantModel.getDocuments(), filePath, false); + setDocumentDeniedReasonsAndDocumentAndFilesRoutes(tenantModel.getDocuments(), filePath, false, userApi); tenantModel.getApartmentSharing().getTenants().stream().filter(t -> Objects.equals(t.getId(), tenantModel.getId())).forEach( t -> { @@ -84,17 +88,17 @@ void modificationsAfterMapping(@MappingTarget TenantModel.TenantModelBuilder ten ); Optional.ofNullable(tenantModel.getApartmentSharing().getTenants()) .ifPresent(coTenantModels -> coTenantModels.forEach(coTenantModel -> { - setDocumentDeniedReasonsAndDocumentAndFilesRoutes(coTenantModel.getDocuments(), filePath, true); + setDocumentDeniedReasonsAndDocumentAndFilesRoutes(coTenantModel.getDocuments(), filePath, true, userApi); Optional.ofNullable(coTenantModel.getGuarantors()) - .ifPresent(guarantorModels -> guarantorModels.forEach(guarantorModel -> setDocumentDeniedReasonsAndDocumentAndFilesRoutes(guarantorModel.getDocuments(), filePath, true))); + .ifPresent(guarantorModels -> guarantorModels.forEach(guarantorModel -> setDocumentDeniedReasonsAndDocumentAndFilesRoutes(guarantorModel.getDocuments(), filePath, true, userApi))); })); Optional.ofNullable(tenantModel.getGuarantors()) - .ifPresent(guarantorModels -> guarantorModels.forEach(guarantorModel -> setDocumentDeniedReasonsAndDocumentAndFilesRoutes(guarantorModel.getDocuments(), filePath, false))); + .ifPresent(guarantorModels -> guarantorModels.forEach(guarantorModel -> setDocumentDeniedReasonsAndDocumentAndFilesRoutes(guarantorModel.getDocuments(), filePath, false, userApi))); } - private void setDocumentDeniedReasonsAndDocumentAndFilesRoutes(List list, String filePath, boolean previewOnly) { + private void setDocumentDeniedReasonsAndDocumentAndFilesRoutes(List list, String filePath, boolean previewOnly, UserApi userApi) { Optional.ofNullable(list) .ifPresent(documentModels -> documentModels.forEach(documentModel -> { DocumentDeniedReasonsModel documentDeniedReasonsModel = documentModel.getDocumentDeniedReasons(); @@ -121,7 +125,7 @@ private void setDocumentDeniedReasonsAndDocumentAndFilesRoutes(List fileModels.forEach(fileModel -> { - if (previewOnly) { + if (previewOnly || isHybrid(userApi)) { fileModel.setPath(""); } else { fileModel.setPath(applicationBaseUrl + filePath + fileModel.getId()); @@ -131,7 +135,7 @@ private void setDocumentDeniedReasonsAndDocumentAndFilesRoutes(List setDocumentDeniedReasonsAndDocumentAndFilesRoutes(tenantModel.getDocuments(), null, true)); + connectedTenantModel.getApartmentSharing().getTenants().forEach(tenantModel -> setDocumentDeniedReasonsAndDocumentAndFilesRoutes(tenantModel.getDocuments(), null, true, userApi)); connectedTenantModel.getApartmentSharing().getTenants().forEach(tenantModel -> Optional.ofNullable(tenantModel.getGuarantors()).ifPresent(guarantorModels -> - guarantorModels.forEach(guarantorModel -> setDocumentDeniedReasonsAndDocumentAndFilesRoutes(guarantorModel.getDocuments(), null, true)))); + guarantorModels.forEach(guarantorModel -> setDocumentDeniedReasonsAndDocumentAndFilesRoutes(guarantorModel.getDocuments(), null, true, userApi)))); } } diff --git a/dossierfacile-api-tenant/src/main/java/fr/dossierfacile/api/front/model/tenant/DocumentModel.java b/dossierfacile-api-tenant/src/main/java/fr/dossierfacile/api/front/model/tenant/DocumentModel.java index fec2afb68..04e18e739 100644 --- a/dossierfacile-api-tenant/src/main/java/fr/dossierfacile/api/front/model/tenant/DocumentModel.java +++ b/dossierfacile-api-tenant/src/main/java/fr/dossierfacile/api/front/model/tenant/DocumentModel.java @@ -21,6 +21,7 @@ public class DocumentModel { private Long id; private DocumentCategory documentCategory; private DocumentSubCategory documentSubCategory; + private DocumentSubCategory subCategory; // TODO Deprecated v5 private Boolean noDocument; private String customText; private Integer monthlySum; diff --git a/dossierfacile-common-library/src/main/java/fr/dossierfacile/common/mapper/MapDocumentCategories.java b/dossierfacile-common-library/src/main/java/fr/dossierfacile/common/mapper/MapDocumentCategories.java index 1c0f167f8..ea7f878ac 100644 --- a/dossierfacile-common-library/src/main/java/fr/dossierfacile/common/mapper/MapDocumentCategories.java +++ b/dossierfacile-common-library/src/main/java/fr/dossierfacile/common/mapper/MapDocumentCategories.java @@ -11,5 +11,7 @@ @Retention(RetentionPolicy.CLASS) @Mapping(target = "documentCategory", expression = "java(categoriesMapper.mapCategory(document.getDocumentCategory(), userApi))") @Mapping(target = "documentSubCategory", expression = "java(categoriesMapper.mapSubCategory(document.getDocumentSubCategory(), userApi))") +// TODO Deprecated v5 +@Mapping(target = "subCategory", expression = "java(categoriesMapper.mapSubCategory(document.getDocumentSubCategory(), userApi))") public @interface MapDocumentCategories { } diff --git a/dossierfacile-common-library/src/main/java/fr/dossierfacile/common/model/apartment_sharing/DocumentModel.java b/dossierfacile-common-library/src/main/java/fr/dossierfacile/common/model/apartment_sharing/DocumentModel.java index 300478ad4..2e103273d 100644 --- a/dossierfacile-common-library/src/main/java/fr/dossierfacile/common/model/apartment_sharing/DocumentModel.java +++ b/dossierfacile-common-library/src/main/java/fr/dossierfacile/common/model/apartment_sharing/DocumentModel.java @@ -19,6 +19,7 @@ public class DocumentModel { private Long id; private DocumentCategory documentCategory; private DocumentSubCategory documentSubCategory; + private DocumentSubCategory subCategory; // TODO deprecated v5 private String customText; private Integer monthlySum; private DocumentStatus documentStatus;