diff --git a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/DossierController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/DossierController.java index 9ef7fb81a..3d606825c 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/DossierController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/DossierController.java @@ -18,6 +18,7 @@ import java.util.Set; import java.util.TreeSet; import java.util.stream.Collectors; +import com.iqser.red.service.persistence.management.v1.processor.service.DossierCreatorService; import org.apache.commons.lang3.StringUtils; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; @@ -73,6 +74,7 @@ public class DossierController implements DossierResource { private final NotificationPersistenceService notificationPersistenceService; private final AccessControlService accessControlService; private final DossierACLService dossierACLService; + private final DossierCreatorService dossierCreatorService; @Override @@ -308,7 +310,7 @@ public class DossierController implements DossierResource { private Dossier createNewDossier(DossierRequest dossier, String ownerId, Set members, Set approvers) { - Dossier newDossier = dossierManagementService.addDossier(CreateOrUpdateDossierRequest.builder() + Dossier newDossier = dossierCreatorService.addDossier(CreateOrUpdateDossierRequest.builder() .dossierName(dossier.getDossierName()) .description(dossier.getDescription()) .dossierTemplateId(dossier.getDossierTemplateId()) @@ -318,9 +320,8 @@ public class DossierController implements DossierResource { .watermarkId(dossier.getWatermarkId()) .previewWatermarkId(dossier.getPreviewWatermarkId()) .dossierStatusId(dossier.getDossierStatusId()) - .build()); + .build(), members, approvers, ownerId); - dossierACLService.updateDossierACL(members, approvers, ownerId, newDossier.getId()); dossierACLService.enhanceDossierWithACLData(newDossier); return newDossier; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierCreatorService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierCreatorService.java new file mode 100644 index 000000000..3cc5a39f3 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierCreatorService.java @@ -0,0 +1,34 @@ +package com.iqser.red.service.persistence.management.v1.processor.service; + +import com.iqser.red.service.persistence.management.v1.processor.acl.custom.dossier.DossierACLService; +import com.iqser.red.service.persistence.management.v1.processor.utils.DossierMapper; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.CreateOrUpdateDossierRequest; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.Dossier; +import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; +import jakarta.transaction.Transactional; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.Set; + + +@Slf4j +@Service +@RequiredArgsConstructor +public class DossierCreatorService { + + private final DossierService dossierService; + private final DossierACLService dossierACLService; + + + @Transactional + public Dossier addDossier(CreateOrUpdateDossierRequest dossierRequest, Set members, Set approvers, String ownerId) { + + var dossier = dossierService.addDossier(dossierRequest); + dossierACLService.updateDossierACL(members, approvers, ownerId, dossier.getId()); + + return MagicConverter.convert(dossier, Dossier.class, new DossierMapper()); + } + +} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierManagementService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierManagementService.java index 252ad7e56..99f93df0e 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierManagementService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierManagementService.java @@ -1,18 +1,7 @@ package com.iqser.red.service.persistence.management.v1.processor.service; -import static com.iqser.red.service.persistence.management.v1.processor.exception.DossierNotFoundException.DOSSIER_NOT_FOUND_MESSAGE; - -import java.time.OffsetDateTime; -import java.util.Collections; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; - -import org.springframework.stereotype.Service; - import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity; import com.iqser.red.service.persistence.management.v1.processor.exception.DossierNotFoundException; -import com.iqser.red.service.persistence.management.v1.processor.settings.FileManagementServiceSettings; import com.iqser.red.service.persistence.management.v1.processor.utils.DossierMapper; import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierInformation; import com.iqser.red.service.persistence.service.v1.api.shared.model.common.JSONPrimitive; @@ -22,10 +11,18 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemp import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileModel; import com.iqser.red.service.search.v1.model.IndexMessageType; import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; - import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.time.OffsetDateTime; +import java.util.Collections; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +import static com.iqser.red.service.persistence.management.v1.processor.exception.DossierNotFoundException.DOSSIER_NOT_FOUND_MESSAGE; @Slf4j @Service @@ -36,8 +33,6 @@ public class DossierManagementService { private final FileStatusService fileStatusService; private final FileService fileService; private final IndexingService indexingService; - private final DictionaryManagementService dictionaryManagementService; - private final FileManagementServiceSettings fileManagementServiceSettings; public Set changesSince(JSONPrimitive since) { @@ -46,15 +41,6 @@ public class DossierManagementService { } - @Transactional - public Dossier addDossier(CreateOrUpdateDossierRequest dossierRequest) { - - var dossier = dossierService.addDossier(dossierRequest); - - return MagicConverter.convert(dossier, Dossier.class, new DossierMapper()); - } - - @Transactional public Dossier updateDossier(CreateOrUpdateDossierRequest dossierRequest, String dossierId) { diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierService.java index 8d3f2fb33..14eb4ab47 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierService.java @@ -1,12 +1,5 @@ package com.iqser.red.service.persistence.management.v1.processor.service; -import java.time.OffsetDateTime; -import java.util.List; -import java.util.Set; - - -import org.springframework.stereotype.Service; - import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity; import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; import com.iqser.red.service.persistence.management.v1.processor.exception.ConflictException; @@ -18,10 +11,15 @@ import com.iqser.red.service.persistence.management.v1.processor.utils.TypeIdUti import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DossierTemplateStatus; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.CreateOrUpdateDossierRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.DossierChange; - +import jakarta.transaction.Transactional; import jakarta.validation.ConstraintViolationException; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.time.OffsetDateTime; +import java.util.List; +import java.util.Set; /** * Provides the internal interface between dossier request and the actual persistence. @@ -40,6 +38,7 @@ public class DossierService { private final DictionaryPersistenceService dictionaryPersistenceService; + @Transactional public DossierEntity addDossier(CreateOrUpdateDossierRequest createOrUpdateDossierRequest) { if (dossierPersistenceService.findAllDossiers()