diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierPersistenceService.java index a1e8b52d5..20458903a 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierPersistenceService.java @@ -46,13 +46,10 @@ public class DossierPersistenceService { dossier.setDate(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)); dossier.setLastUpdated(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)); dossier.setDossierTemplate(dossierTemplateRepository.getOne(createOrUpdateDossierRequest.getDossierTemplateId())); - if(createOrUpdateDossierRequest.getDossierStatusId() != null) { - //TODO: make other verifications that the dossierStatus matches the dossierTemplateId? - dossier.setDossierStatus(dossierStatusPersistenceService.getDossierStatus(createOrUpdateDossierRequest.getDossierStatusId())); - } var reportTemplates = reportTemplateRepository.findAllById(createOrUpdateDossierRequest.getReportTemplateIds()); reportTemplates.forEach(r -> r.getDossiers().add(dossier)); dossier.setReportTemplates(reportTemplates); + this.handleDossierStatus(createOrUpdateDossierRequest, dossier); return dossierRepository.save(dossier); @@ -76,13 +73,24 @@ public class DossierPersistenceService { } }); dossier.setReportTemplates(reportTemplates); - if (createOrUpdateDossierRequest.getDossierStatusId() != null) { - dossier.setDossierStatus(dossierStatusPersistenceService.getDossierStatus(createOrUpdateDossierRequest.getDossierStatusId())); - } + this.handleDossierStatus(createOrUpdateDossierRequest, dossier); }); } + private void handleDossierStatus(CreateOrUpdateDossierRequest createOrUpdateDossierRequest, DossierEntity dossier) { + if (createOrUpdateDossierRequest.getDossierStatusId() != null) { + var dossierStatus = dossierStatusPersistenceService.getDossierStatus(createOrUpdateDossierRequest.getDossierStatusId()); + if (dossierStatus.getDossierTemplateId().equals(createOrUpdateDossierRequest.getDossierTemplateId())) { + dossier.setDossierStatus(dossierStatus); + } else { + throw new BadRequestException("Invalid Dossier Status"); + } + } else { + dossier.setDossierStatus(null); + } + } + public DossierEntity getAndValidateDossier(String dossierId) { // check whether the dossierId exists and is not deleted diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DossierStatusController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DossierStatusController.java index 3dc5fea2d..69960e37f 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DossierStatusController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DossierStatusController.java @@ -19,6 +19,7 @@ import static com.iqser.red.service.persistence.management.v1.processor.utils.Ma public class DossierStatusController implements DossierStatusResource { private final DossierStatusPersistenceService dossierStatusPersistenceService; + @Override public DossierStatusInfo createOrUpdateDossierStatus(CreateOrUpdateDossierStatusRequest dossierStatusRequest) { return convert(dossierStatusPersistenceService.createOrUpdateDossierStatus(dossierStatusRequest), DossierStatusInfo.class);