diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DownloadController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DownloadController.java index 45ff37323..0be2ff715 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DownloadController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DownloadController.java @@ -8,6 +8,7 @@ import java.util.stream.Collectors; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.ReportTemplateEntity; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ReportTemplateRepository; import com.iqser.red.service.persistence.service.v1.api.model.download.DownloadWithOptionRequest; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.web.bind.annotation.PathVariable; @@ -42,6 +43,7 @@ public class DownloadController implements DownloadResource { private final DownloadStatusPersistenceService downloadStatusPersistenceService; private final FileStatusPersistenceService fileStatusPersistenceService; private final DossierPersistenceService dossierPersistenceService; + private final ReportTemplateRepository reportTemplateRepository; private final ObjectMapper objectMapper; private final RabbitTemplate rabbitTemplate; @@ -70,14 +72,16 @@ public class DownloadController implements DownloadResource { public JSONPrimitive prepareDownload(@RequestBody DownloadWithOptionRequest request) { var existingFileStatuses = fileStatusPersistenceService.getStatusesForDossier(request.getDossierId()); var dossier = dossierPersistenceService.getActiveOrArchivedDossier(request.getDossierId()); - // check reports list and download types - if (request.getReportTemplateIds() == null || request.getReportTemplateIds().isEmpty()) { - request.setReportTemplateIds(dossier.getReportTemplates().stream().map(ReportTemplateEntity::getTemplateId).collect(Collectors.toList())); - } - if (request.getDownloadFileTypes() == null || request.getDownloadFileTypes().isEmpty()) { - request.setDownloadFileTypes(dossier.getDownloadFileTypes()); - } + // check reports list and download types so both can be valid + if (request.getReportTemplateIds() != null && !request.getReportTemplateIds().isEmpty()) { + //validate reports ids + var reportTemplates = reportTemplateRepository.findAllById(request.getReportTemplateIds()); + if (reportTemplates.isEmpty() && (request.getDownloadFileTypes() == null || request.getDownloadFileTypes().isEmpty())) { + throw new BadRequestException(" Invalid reports ids and no download types"); + } + request.setReportTemplateIds(reportTemplates.stream().map(ReportTemplateEntity::getTemplateId).collect(Collectors.toList())); + } return this.startPrepareDownload(request, dossier, existingFileStatuses); }