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:
commit
2d01de9717
@ -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;
|
||||||
|
}
|
||||||
@ -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.ReportTemplate;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.ReportTemplateDownload;
|
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 com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.ReportTemplateUploadRequest;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
@ -19,6 +20,7 @@ public interface ReportTemplateResource {
|
|||||||
String TEMPLATE_ID_PATH_VARIABLE = "/{" + TEMPLATE_ID + "}";
|
String TEMPLATE_ID_PATH_VARIABLE = "/{" + TEMPLATE_ID + "}";
|
||||||
|
|
||||||
String DOWNLOAD_PATH = "download";
|
String DOWNLOAD_PATH = "download";
|
||||||
|
String UPDATE_PATH = "update";
|
||||||
|
|
||||||
|
|
||||||
@PostMapping(value = REPORT_TEMPLATE_UPLOAD_PATH, consumes = MediaType.APPLICATION_JSON_VALUE, produces =
|
@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)
|
@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);
|
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);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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.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.DossierTemplateRepository;
|
||||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ReportTemplateRepository;
|
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 lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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 com.iqser.red.service.persistence.management.v1.processor.entity.dossier.ReportTemplateEntity;
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
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;
|
import java.util.List;
|
||||||
|
|
||||||
public interface ReportTemplateRepository extends JpaRepository<ReportTemplateEntity, String> {
|
public interface ReportTemplateRepository extends JpaRepository<ReportTemplateEntity, String> {
|
||||||
List<ReportTemplateEntity> findAllByDossierTemplateId(String dossierTemplateId);
|
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);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import java.io.IOException;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
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.io.IOUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.catchThrowable;
|
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.junit.Test;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user