diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DossierAttributesController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DossierAttributesController.java index 2c31faa81..b43c3f671 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DossierAttributesController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DossierAttributesController.java @@ -2,17 +2,22 @@ package com.iqser.red.service.peristence.v1.server.controller; import com.iqser.red.service.peristence.v1.server.service.DossierService; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierAttributeConfigEntity; +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.service.persistence.DossierAttributeConfigPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierAttributePersistenceService; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierAttribute; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierAttributeType; import com.iqser.red.service.persistence.service.v1.api.resources.DossierAttributesResource; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; @@ -31,10 +36,10 @@ public class DossierAttributesController implements DossierAttributesResource { var dossier = dossierService.getDossierById(dossierId); var config = dossierAttributeConfigPersistenceService.getDossierAttributes(dossier.getDossierTemplateId()); + + var typeById = config.stream().collect(Collectors.toMap(entry -> entry.getId(), entry -> entry.getType())); for (DossierAttribute dossierAttribute : dossierAttributes) { - if (config.stream().map(DossierAttributeConfigEntity::getId).noneMatch(id -> id.equals(dossierAttribute.getDossierAttributeConfigId()))) { - throw new ConflictException("Dossier attribute configuration does not exist."); - } + validateDossierAttribute(typeById, dossierAttribute); } dossierAttributePersistenceService.deleteDossierAttribute(dossierId); @@ -54,10 +59,8 @@ public class DossierAttributesController implements DossierAttributesResource { var dossierAttributes = dossierAttributePersistenceService.getDossierAttributes(dossierId); var config = dossierAttributeConfigPersistenceService.getDossierAttributes(dossier.getDossierTemplateId()); - - if (config.stream().map(DossierAttributeConfigEntity::getId).noneMatch(id -> id.equals(dossierAttribute.getDossierAttributeConfigId()))) { - throw new ConflictException("Dossier attribute configuration does not exist."); - } + var typeById = config.stream().collect(Collectors.toMap(entry -> entry.getId(), entry -> entry.getType())); + validateDossierAttribute(typeById, dossierAttribute); if (dossierAttributes.stream().anyMatch(d -> d.getId().getDossierId().equals(dossierAttribute.getDossierId()) && d.getId().getDossierAttributeConfigId().equals(dossierAttribute.getDossierAttributeConfigId()))) { @@ -83,5 +86,17 @@ public class DossierAttributesController implements DossierAttributesResource { } + private void validateDossierAttribute(Map typeById, DossierAttribute dossierAttribute ){ + + if (!typeById.containsKey(dossierAttribute.getDossierAttributeConfigId())) { + throw new ConflictException("Dossier attribute configuration does not exist."); + } + + DossierAttributeType type = typeById.get(dossierAttribute.getDossierAttributeConfigId()); + if(type.equals(DossierAttributeType.IMAGE) && !(dossierAttribute.getValue().startsWith("data:image/png;base64") || dossierAttribute.getValue().startsWith("data:image/jpg;base64") || dossierAttribute.getValue().startsWith("data:image/jpeg;base64"))){ + throw new BadRequestException("Only png, jpg and jpeg files are allowed for image dossier attributes"); + } + } + }