Pull request #567: RED-5600 - 500 error code and wrong status codes for /download/prepare-option

Merge in RED/persistence-service from bugfix/RED-5600 to master

* commit 'eca24a45354879841e4fea8130d4699e6734af0a':
  RED-5600 - 500 error code and wrong status codes for /download/prepare-option
This commit is contained in:
Corina Olariu 2022-11-17 10:24:23 +01:00
commit 913fda17c5

View File

@ -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<String> 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);
}