diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DictionaryManagementService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DictionaryManagementService.java index 3f077a717..c9579cbe8 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DictionaryManagementService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DictionaryManagementService.java @@ -294,11 +294,13 @@ public class DictionaryManagementService { checkDossierMatchesDossierTemplate(dossierId, dossierTemplateId); // type not found, it should be created based on the info from the dossier template type var dossierTemplateType = dictionaryPersistenceService.getType(getDosssierTemplateTypeIdFromTypeId(typeId), includeDeleted); - Type dossierDictionaryType = MagicConverter.convert(dossierTemplateType, Type.class); - dossierDictionaryType.setVersion(0); - dossierDictionaryType.setDossierId(dossierId); - var returnedType = this.addType(dossierDictionaryType); - log.info("Type added: " + returnedType.toString()); + if (!dossierTemplateType.isDeleted()) { //create dossier types if dossier template type is not deleted + Type dossierDictionaryType = MagicConverter.convert(dossierTemplateType, Type.class); + dossierDictionaryType.setVersion(0); + dossierDictionaryType.setDossierId(dossierId); + var returnedType = this.addType(dossierDictionaryType); + log.info("Type added: " + returnedType.toString()); + } } } } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DictionaryTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DictionaryTest.java index 584cbd23c..7a9888bf5 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DictionaryTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DictionaryTest.java @@ -851,6 +851,55 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest { } + @Test + public void testCreateDossierOnTheFlyForDTTypeDeleted() { + + var dossier = dossierTesterAndProvider.provideTestDossier(); + + var dossierTemplate = dossierTemplateClient.getDossierTemplate(dossier.getDossierTemplateId()); + + var dtType = dictionaryClient.addType(CreateTypeValue.builder() + .type("test1") + .label("test1") + .hexColor("#fcba03") + .rank(100) + .hint(false) + .caseInsensitive(false) + .recommendation(false) + .addToDictionaryAction(true) + .dossierTemplateId(dossierTemplate.getId()) + .dossierDictionaryOnly(false) + .build()); + assertThat(dtType.getRank()).isEqualTo(100); + assertThat(dtType.isDossierDictionaryOnly()).isFalse(); + assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), null, true).getTypes().size()).isEqualTo(1); + + dictionaryClient.deleteType(dtType.getType(), dtType.getDossierTemplateId()); + assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), null, false).getTypes().size()).isEqualTo(0); + assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), null, true).getTypes().size()).isEqualTo(1); + + var dtType2 = dictionaryClient.addType(CreateTypeValue.builder() + .type("test2") + .label("test2") + .hexColor("#fcba03") + .rank(100) + .hint(false) + .caseInsensitive(false) + .recommendation(false) + .addToDictionaryAction(true) + .dossierTemplateId(dossierTemplate.getId()) + .dossierDictionaryOnly(false) + .build()); + assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), null, false).getTypes().size()).isEqualTo(1); + assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), null, true).getTypes().size()).isEqualTo(2); + + assertThat(dtType2.getRank()).isEqualTo(dtType.getRank()); + assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), dossier.getId(), false).getTypes().size()).isEqualTo(2); + assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), dossier.getId(), true).getTypes().size()).isEqualTo(3); + + } + + @SuppressWarnings("SameParameterValue") private List createDummyEntries(int numberOfEntries) {