diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DossierStatusResource.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DossierStatusResource.java index 31e1a9129..5a52c56f5 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DossierStatusResource.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DossierStatusResource.java @@ -12,6 +12,7 @@ public interface DossierStatusResource { String DOSSIER_STATUS_PATH = "/dossier-status"; + String DOSSIER_TEMPLATE_PATH = "/dossier-template"; String DOSSIER_TEMPLATE_ID = "dossierTemplateId"; String DOSSIER_TEMPLATE_ID_PATH_VARIABLE = "/{" + DOSSIER_TEMPLATE_ID + "}"; @@ -32,7 +33,7 @@ public interface DossierStatusResource { @ResponseBody @ResponseStatus(value = HttpStatus.OK) - @GetMapping(value = DOSSIER_STATUS_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE) + @GetMapping(value = DOSSIER_STATUS_PATH + DOSSIER_TEMPLATE_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE) List getAllDossierStatusForTemplate(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId); @ResponseBody diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierStatusPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierStatusPersistenceService.java index 1af464ca5..5aed40368 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierStatusPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierStatusPersistenceService.java @@ -2,6 +2,7 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persis import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierStatusEntity; import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; +import com.iqser.red.service.persistence.management.v1.processor.exception.ConflictException; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierStatusRepository; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierStatusRequest; @@ -28,13 +29,14 @@ public class DossierStatusPersistenceService { if (createOrUpdateDossierStatusRequest.getDossierStatusId() != null) { //update Optional dossierStatus = dossierStatusRepository.findById(createOrUpdateDossierStatusRequest.getDossierStatusId()); if (dossierStatus.isPresent()) { - + validateDossierTemplateNameIsUnique(createOrUpdateDossierStatusRequest.getName(), createOrUpdateDossierStatusRequest.getDossierTemplateId()); BeanUtils.copyProperties(createOrUpdateDossierStatusRequest, dossierStatus.get()); return dossierStatus.get(); } else { throw new NotFoundException(String.format(DOSSIER_STATUS_NOT_FOUND_MESSAGE, createOrUpdateDossierStatusRequest.getDossierStatusId())); } } else { + validateDossierTemplateNameIsUnique(createOrUpdateDossierStatusRequest.getName(), createOrUpdateDossierStatusRequest.getDossierTemplateId()); DossierStatusEntity dossierStatus = new DossierStatusEntity(); dossierStatus.setId(UUID.randomUUID().toString()); BeanUtils.copyProperties(createOrUpdateDossierStatusRequest, dossierStatus); @@ -79,4 +81,12 @@ public class DossierStatusPersistenceService { }); dossierStatusRepository.deleteById(dossierStatusId); } + + public void validateDossierTemplateNameIsUnique(String dossierStatusName, String dossierTemplateId) { + getAllDossierStatusForTemplate(dossierTemplateId).forEach(existing -> { + if (existing.getName().equals(dossierStatusName)) { + throw new ConflictException("DossierStatus name must be unique within the same dossier template"); + } + }); + } } 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 eee80dcc9..3b69e69a0 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 @@ -35,7 +35,7 @@ public class DossierStatusController implements DossierStatusResource { @Override public List getAllDossierStatusForTemplate(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId) { - return convert(dossierStatusPersistenceService.getAllDossierStatus(), DossierStatusInfo.class); + return convert(dossierStatusPersistenceService.getAllDossierStatusForTemplate(dossierTemplateId), DossierStatusInfo.class); } @Override @@ -46,6 +46,6 @@ public class DossierStatusController implements DossierStatusResource { @Override public void deleteDossierStatus(String dossierStatusId, @RequestParam(value = DOSSIER_STATUS_REPLACE_ID, required = false) String replaceDossierStatusId) { - dossierStatusPersistenceService.deleteDossierStatus(dossierStatusId,replaceDossierStatusId); + dossierStatusPersistenceService.deleteDossierStatus(dossierStatusId, replaceDossierStatusId); } }