From ebac27069352b84518bd1178845a45f54ca07b30 Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Tue, 1 Feb 2022 13:50:49 +0200 Subject: [PATCH 1/5] Dossier Status fixes --- .../service/v1/api/resources/DossierStatusResource.java | 1 + .../service/persistence/DossierStatusPersistenceService.java | 3 +++ 2 files changed, 4 insertions(+) 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 5a52c56f5..67eebd8d2 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 @@ -13,6 +13,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 + "}"; 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 5aed40368..9f139fa1a 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 @@ -63,6 +63,9 @@ public class DossierStatusPersistenceService { @Transactional public void deleteDossierStatus(String dossierStatusId, String replaceDossierStatusId) { + if(dossierStatusId.equalsIgnoreCase(replaceDossierStatusId)){ + throw new BadRequestException("Cannot replace with self"); + } dossierStatusRepository.findById(dossierStatusId).ifPresent(toDeleteDossierStatus -> { From 152f1fdac45f2430cb3a5d363559d477ae92547f Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Tue, 1 Feb 2022 13:52:39 +0200 Subject: [PATCH 2/5] color --- .../dossier/CreateOrUpdateDossierStatusRequest.java | 2 ++ .../api/model/dossiertemplate/dossier/DossierStatusInfo.java | 1 + .../v1/processor/entity/dossier/DossierStatusEntity.java | 3 +++ .../service/persistence/DossierStatusPersistenceService.java | 2 +- .../db/changelog/6-dossier-status-table.changelog.yaml | 3 +++ 5 files changed, 10 insertions(+), 1 deletion(-) diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/CreateOrUpdateDossierStatusRequest.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/CreateOrUpdateDossierStatusRequest.java index 9b5518410..ff67a0661 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/CreateOrUpdateDossierStatusRequest.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/CreateOrUpdateDossierStatusRequest.java @@ -17,5 +17,7 @@ public class CreateOrUpdateDossierStatusRequest { private String description; + private String color; + private String dossierTemplateId; } diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/DossierStatusInfo.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/DossierStatusInfo.java index 9843fb475..1ba502394 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/DossierStatusInfo.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/DossierStatusInfo.java @@ -20,6 +20,7 @@ public class DossierStatusInfo { private String id; private String name; private String description; + private String color; private String dossierTemplateId; } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierStatusEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierStatusEntity.java index bf748095c..f45c038e1 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierStatusEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierStatusEntity.java @@ -26,6 +26,9 @@ public class DossierStatusEntity { @Column private String description; + @Column + private String color; + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "dossier_template_id") private DossierTemplateEntity dossierTemplate; 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 9f139fa1a..fff283fba 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 @@ -63,7 +63,7 @@ public class DossierStatusPersistenceService { @Transactional public void deleteDossierStatus(String dossierStatusId, String replaceDossierStatusId) { - if(dossierStatusId.equalsIgnoreCase(replaceDossierStatusId)){ + if (dossierStatusId.equalsIgnoreCase(replaceDossierStatusId)) { throw new BadRequestException("Cannot replace with self"); } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/6-dossier-status-table.changelog.yaml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/6-dossier-status-table.changelog.yaml index 6e9a8a535..2c35f1489 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/6-dossier-status-table.changelog.yaml +++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/6-dossier-status-table.changelog.yaml @@ -15,6 +15,9 @@ databaseChangeLog: - column: name: description type: VARCHAR(255) + - column: + name: description + type: VARCHAR(20) - column: name: dossier_template_id type: VARCHAR(255) From 8ce645c227f9248acb3b76d61f4a41d0f161df6d Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Tue, 1 Feb 2022 14:30:03 +0200 Subject: [PATCH 3/5] color --- .../db/changelog/6-dossier-status-table.changelog.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/6-dossier-status-table.changelog.yaml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/6-dossier-status-table.changelog.yaml index 2c35f1489..43794f8db 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/6-dossier-status-table.changelog.yaml +++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/6-dossier-status-table.changelog.yaml @@ -13,7 +13,7 @@ databaseChangeLog: name: id type: VARCHAR(255) - column: - name: description + name: color type: VARCHAR(255) - column: name: description From a3e42db42604e6f3f39a709af5813673d0911047 Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Tue, 1 Feb 2022 15:12:08 +0200 Subject: [PATCH 4/5] Dossier Status dossier count --- .../dossiertemplate/dossier/DossierStatusInfo.java | 1 + .../v1/api/resources/DossierStatusResource.java | 5 ----- .../processor/entity/dossier/DossierStatusEntity.java | 2 ++ .../persistence/DossierStatusPersistenceService.java | 11 +++++++---- .../repository/DossierStatusRepository.java | 11 +++++++++-- .../v1/server/controller/DossierStatusController.java | 7 +------ .../server/integration/tests/DossierStatusTest.java | 10 ++++++++-- 7 files changed, 28 insertions(+), 19 deletions(-) diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/DossierStatusInfo.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/DossierStatusInfo.java index 1ba502394..bbd8e256a 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/DossierStatusInfo.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/DossierStatusInfo.java @@ -22,5 +22,6 @@ public class DossierStatusInfo { private String description; private String color; private String dossierTemplateId; + private Long dossierCount; } 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 67eebd8d2..b47ecb119 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 @@ -27,11 +27,6 @@ public interface DossierStatusResource { @PostMapping(value = DOSSIER_STATUS_PATH, consumes = MediaType.APPLICATION_JSON_VALUE) DossierStatusInfo createOrUpdateDossierStatus(@RequestBody CreateOrUpdateDossierStatusRequest dossierStatusRequest); - @ResponseBody - @ResponseStatus(value = HttpStatus.OK) - @GetMapping(value = DOSSIER_STATUS_PATH, produces = MediaType.APPLICATION_JSON_VALUE) - List getAllDossierStatus(); - @ResponseBody @ResponseStatus(value = HttpStatus.OK) @GetMapping(value = DOSSIER_STATUS_PATH + DOSSIER_TEMPLATE_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierStatusEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierStatusEntity.java index f45c038e1..c411c287a 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierStatusEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierStatusEntity.java @@ -4,6 +4,7 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import org.hibernate.annotations.Formula; import javax.persistence.*; import java.util.ArrayList; @@ -38,4 +39,5 @@ public class DossierStatusEntity { @OneToMany(mappedBy = "dossierStatus") private List dossiers = new ArrayList<>(); + } 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 fff283fba..8c9f1c8d4 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 @@ -6,6 +6,7 @@ import com.iqser.red.service.persistence.management.v1.processor.exception.Confl 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; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatusInfo; import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -48,12 +49,14 @@ public class DossierStatusPersistenceService { } } - public List getAllDossierStatus() { - return dossierStatusRepository.findAll(); + + public List getAllDossierStatusForTemplate(String dossierTemplateId) { + var x = dossierStatusRepository.getAllDossierStatusForDossierTemplate(dossierTemplateId); + return x; } - public List getAllDossierStatusForTemplate(String dossierTemplateId) { - return dossierStatusRepository.getAllDossierStatusForDossierTemplate(dossierTemplateId); + public DossierStatusInfo getDossierStatusInfo(String dossierStatusId) { + return dossierStatusRepository.findProjectionById(dossierStatusId).orElseThrow(() -> new NotFoundException(String.format(DOSSIER_STATUS_NOT_FOUND_MESSAGE, dossierStatusId))); } public DossierStatusEntity getDossierStatus(String dossierStatusId) { diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DossierStatusRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DossierStatusRepository.java index a992eced4..4f3395b65 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DossierStatusRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DossierStatusRepository.java @@ -1,13 +1,20 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierStatusEntity; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatusInfo; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import java.util.List; +import java.util.Optional; public interface DossierStatusRepository extends JpaRepository { - @Query("select s from DossierStatusEntity s where s.dossierTemplateId = :dossierTemplateId") - List getAllDossierStatusForDossierTemplate(String dossierTemplateId); + @Query("select new com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatusInfo(s.id, s.name," + + "s.description, s.color, s.dossierTemplateId, count(d)) from DossierStatusEntity s left outer join s.dossiers d where s.dossierTemplateId = :dossierTemplateId group by s") + List getAllDossierStatusForDossierTemplate(String dossierTemplateId); + + @Query("select new com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatusInfo(s.id, s.name," + + "s.description, s.color, s.dossierTemplateId, count(d)) from DossierStatusEntity s left outer join s.dossiers d where s.id = :dossierStatusId") + Optional findProjectionById(String dossierStatusId); } 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 3b69e69a0..db5c48d43 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 @@ -27,11 +27,6 @@ public class DossierStatusController implements DossierStatusResource { return convert(dossierStatusPersistenceService.createOrUpdateDossierStatus(dossierStatusRequest), DossierStatusInfo.class); } - @Override - public List getAllDossierStatus() { - - return convert(dossierStatusPersistenceService.getAllDossierStatus(), DossierStatusInfo.class); - } @Override public List getAllDossierStatusForTemplate(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId) { @@ -41,7 +36,7 @@ public class DossierStatusController implements DossierStatusResource { @Override public DossierStatusInfo getDossierStatus(@PathVariable(DOSSIER_STATUS_ID) String dossierStatusId) { - return convert(dossierStatusPersistenceService.getDossierStatus(dossierStatusId), DossierStatusInfo.class); + return dossierStatusPersistenceService.getDossierStatusInfo(dossierStatusId); } @Override diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierStatusTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierStatusTest.java index a24fa2d44..9a24ca920 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierStatusTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierStatusTest.java @@ -31,7 +31,7 @@ public class DossierStatusTest extends AbstractPersistenceServerServiceTest { public void testDossierStatus() { var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate(); - var allDossierStatus = dossierStatusClient.getAllDossierStatus(); + var allDossierStatus = dossierStatusClient.getAllDossierStatusForTemplate(dossierTemplate.getId()); assertThat(allDossierStatus.size()).isZero(); @@ -43,7 +43,7 @@ public class DossierStatusTest extends AbstractPersistenceServerServiceTest { var loadedDossierStatus = dossierStatusClient.createOrUpdateDossierStatus(crudsr); assertThat(loadedDossierStatus).isNotNull(); - allDossierStatus = dossierStatusClient.getAllDossierStatus(); + allDossierStatus = dossierStatusClient.getAllDossierStatusForTemplate(dossierTemplate.getId()); assertThat(allDossierStatus.size()).isEqualTo(1); var testDossier = dossierTesterAndProvider.provideTestDossier(dossierTemplate, "1", allDossierStatus.iterator().next()); @@ -56,6 +56,12 @@ public class DossierStatusTest extends AbstractPersistenceServerServiceTest { cru.setDossierTemplateId(testDossier.getDossierTemplateId()); cru.setDossierStatusId(null); + allDossierStatus = dossierStatusClient.getAllDossierStatusForTemplate(dossierTemplate.getId()); + assertThat(allDossierStatus.size()).isEqualTo(1); + + assertThat(allDossierStatus.iterator().next().getDossierCount()).isEqualTo(1); + + var updated = dossierClient.updateDossier(cru, testDossier.getId()); assertThat(updated.getDossierStatusId()).isNull(); From f55db3eaf4670349b78f7ffda2e62039eb9ca8a3 Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Tue, 1 Feb 2022 15:20:32 +0200 Subject: [PATCH 5/5] Dossier Status Self name --- .../persistence/DossierStatusPersistenceService.java | 9 +++++---- .../v1/server/integration/tests/DossierStatusTest.java | 5 +++++ 2 files changed, 10 insertions(+), 4 deletions(-) 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 8c9f1c8d4..cbbde7b89 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 @@ -30,14 +30,15 @@ public class DossierStatusPersistenceService { if (createOrUpdateDossierStatusRequest.getDossierStatusId() != null) { //update Optional dossierStatus = dossierStatusRepository.findById(createOrUpdateDossierStatusRequest.getDossierStatusId()); if (dossierStatus.isPresent()) { - validateDossierTemplateNameIsUnique(createOrUpdateDossierStatusRequest.getName(), createOrUpdateDossierStatusRequest.getDossierTemplateId()); + validateDossierTemplateNameIsUnique(createOrUpdateDossierStatusRequest.getName(), createOrUpdateDossierStatusRequest.getDossierTemplateId(), + createOrUpdateDossierStatusRequest.getDossierStatusId()); 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()); + validateDossierTemplateNameIsUnique(createOrUpdateDossierStatusRequest.getName(), createOrUpdateDossierStatusRequest.getDossierTemplateId(),null); DossierStatusEntity dossierStatus = new DossierStatusEntity(); dossierStatus.setId(UUID.randomUUID().toString()); BeanUtils.copyProperties(createOrUpdateDossierStatusRequest, dossierStatus); @@ -88,9 +89,9 @@ public class DossierStatusPersistenceService { dossierStatusRepository.deleteById(dossierStatusId); } - public void validateDossierTemplateNameIsUnique(String dossierStatusName, String dossierTemplateId) { + public void validateDossierTemplateNameIsUnique(String dossierStatusName, String dossierTemplateId, String dossierStatusId) { getAllDossierStatusForTemplate(dossierTemplateId).forEach(existing -> { - if (existing.getName().equals(dossierStatusName)) { + if (existing.getName().equals(dossierStatusName) && !existing.getId().equals(dossierStatusId)) { throw new ConflictException("DossierStatus name must be unique within the same dossier template"); } }); diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierStatusTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierStatusTest.java index 9a24ca920..0497026d4 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierStatusTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierStatusTest.java @@ -43,6 +43,11 @@ public class DossierStatusTest extends AbstractPersistenceServerServiceTest { var loadedDossierStatus = dossierStatusClient.createOrUpdateDossierStatus(crudsr); assertThat(loadedDossierStatus).isNotNull(); + crudsr.setDossierStatusId(loadedDossierStatus.getId()); + crudsr.setDescription("New Description"); + var updatedStatus = dossierStatusClient.createOrUpdateDossierStatus(crudsr); + assertThat(updatedStatus).isNotNull(); + allDossierStatus = dossierStatusClient.getAllDossierStatusForTemplate(dossierTemplate.getId()); assertThat(allDossierStatus.size()).isEqualTo(1);