Pull request #108: RED-2488 As an admin I want to set if the report is included in the download package by default

Merge in RED/persistence-service from RED-2488 to master

* commit 'd5471a0153a57a8dd4be5842ce11a5e4a2f89f4f':
  RED-2488 As an admin I want to set if the report is included in the download package by default
This commit is contained in:
Corina Olariu 2021-11-09 11:45:54 +01:00 committed by Timo Bejan
commit 2d01de9717
6 changed files with 93 additions and 0 deletions

View File

@ -0,0 +1,16 @@
package com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate;
import lombok.*;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class ReportTemplateUpdateRequest {
@NonNull
private String fileName;
private boolean multiFileReport;
private boolean activeByDefault;
}

View File

@ -2,6 +2,7 @@ package com.iqser.red.service.persistence.service.v1.api.resources;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.ReportTemplate;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.ReportTemplateDownload;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.ReportTemplateUpdateRequest;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.ReportTemplateUploadRequest;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
@ -19,6 +20,7 @@ public interface ReportTemplateResource {
String TEMPLATE_ID_PATH_VARIABLE = "/{" + TEMPLATE_ID + "}";
String DOWNLOAD_PATH = "download";
String UPDATE_PATH = "update";
@PostMapping(value = REPORT_TEMPLATE_UPLOAD_PATH, consumes = MediaType.APPLICATION_JSON_VALUE, produces =
@ -37,5 +39,8 @@ public interface ReportTemplateResource {
@DeleteMapping(value = REPORT_TEMPLATE_UPLOAD_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE + TEMPLATE_ID_PATH_VARIABLE)
void deleteTemplate(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, @PathVariable(TEMPLATE_ID) String templateId);
@PutMapping(value = REPORT_TEMPLATE_UPLOAD_PATH + UPDATE_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE + TEMPLATE_ID_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE)
void updateTemplate(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, @PathVariable(TEMPLATE_ID) String templateId,
@RequestBody ReportTemplateUpdateRequest reportTemplateUpdateRequest);
}

View File

@ -4,6 +4,7 @@ import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.
import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierTemplateRepository;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ReportTemplateRepository;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.ReportTemplateUpdateRequest;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@ -51,5 +52,14 @@ public class ReportTemplatePersistenceService {
}
@Transactional
public void updateTemplate(String dossierTemplateId, String templateId, ReportTemplateUpdateRequest updateRequest) {
int countUpdate = reportTemplateRepository.updateReportTemplate(dossierTemplateId, templateId, updateRequest.getFileName(),
updateRequest.isMultiFileReport(), updateRequest.isActiveByDefault());
if (countUpdate == 0) {
throw new NotFoundException("Report Template not found for dossier template Id: " + dossierTemplateId + " and templateId: " + templateId);
}
}
}

View File

@ -2,9 +2,16 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persis
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.ReportTemplateEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
public interface ReportTemplateRepository extends JpaRepository<ReportTemplateEntity, String> {
List<ReportTemplateEntity> findAllByDossierTemplateId(String dossierTemplateId);
@Modifying
@Query("update ReportTemplateEntity r set r.fileName = :fileName, r.multiFileReport = :multiFileReport, r.activeByDefault = :activeByDefault " +
"where r.templateId = :templateId and r.dossierTemplateId = :dossierTemplateId")
int updateReportTemplate(String dossierTemplateId, String templateId, String fileName, boolean multiFileReport, boolean activeByDefault);
}

View File

@ -6,6 +6,7 @@ import java.io.IOException;
import java.util.List;
import java.util.UUID;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.ReportTemplateUpdateRequest;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.PathVariable;
@ -94,4 +95,11 @@ public class ReportTemplateController implements ReportTemplateResource {
}
public void updateTemplate(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId,
@PathVariable(TEMPLATE_ID) String templateId,
@RequestBody ReportTemplateUpdateRequest reportTemplateUpdateRequest) {
reportTemplatePersistenceService.updateTemplate(dossierTemplateId, templateId, reportTemplateUpdateRequest);
}
}

View File

@ -3,6 +3,9 @@ package com.iqser.red.service.peristence.v1.server.integration.tests;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.catchThrowable;
import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.ReportTemplateUpdateRequest;
import feign.FeignException;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
@ -427,4 +430,48 @@ public class ReportTemplateTest extends AbstractPersistenceServerServiceTest {
}
/*
* Update report
*/
@Test
public void testReportTemplateUpdate() {
// Arrange
String fileName = "report.xlsx";
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
// Act & Assert
reportTemplateClient.uploadTemplate(ReportTemplateUploadRequest.builder()
.activeByDefault(true)
.dossierTemplateId(dossierTemplate.getId())
.multiFileReport(false)
.fileName(fileName)
.template(new byte[]{1, 2, 3, 4})
.build());
var availableTemplates = reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId());
assertThat(availableTemplates).isNotEmpty();
var firstTemplate = reportTemplateClient.getReportTemplate(dossierTemplate.getId(), availableTemplates.iterator()
.next()
.getTemplateId());
assertThat(availableTemplates.iterator().next()).isEqualTo(firstTemplate);
assertThat(firstTemplate.getFileName()).isEqualTo(fileName);
String filenameUpdate = "reportUpdated.xlsx";
var updateRequest = new ReportTemplateUpdateRequest(filenameUpdate, true, true);
reportTemplateClient.updateTemplate(dossierTemplate.getId(), firstTemplate.getTemplateId(), updateRequest);
var templateUpdated = reportTemplateClient.getReportTemplate(dossierTemplate.getId(), firstTemplate.getTemplateId());
assertThat(templateUpdated.getFileName()).isEqualTo(filenameUpdate);
assertThat(templateUpdated.isMultiFileReport()).isTrue();
assertThat(templateUpdated.isActiveByDefault()).isTrue();
try {
reportTemplateClient.updateTemplate("123wrongDossier", firstTemplate.getTemplateId(), updateRequest);
} catch(FeignException e) {
assertThat(e.status()).isEqualTo(404);
}
}
}