RED-3938: Extend the clone dossier template endpoint
This commit is contained in:
parent
d1c7b6e743
commit
f9ac8fafe6
@ -0,0 +1,32 @@
|
|||||||
|
package com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate;
|
||||||
|
|
||||||
|
import java.time.OffsetDateTime;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class CloneDossierTemplateRequest {
|
||||||
|
|
||||||
|
private String dossierTemplateId;
|
||||||
|
|
||||||
|
private String nameOfClonedDossierTemplate;
|
||||||
|
|
||||||
|
private String description;
|
||||||
|
|
||||||
|
private OffsetDateTime validFrom;
|
||||||
|
|
||||||
|
private OffsetDateTime validTo;
|
||||||
|
|
||||||
|
private String cloningUserId;
|
||||||
|
|
||||||
|
private Set<DownloadFileType> downloadFileTypes = new HashSet<>();
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,5 +1,6 @@
|
|||||||
package com.iqser.red.service.persistence.service.v1.api.resources;
|
package com.iqser.red.service.persistence.service.v1.api.resources;
|
||||||
|
|
||||||
|
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.CloneDossierTemplateRequest;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.CreateOrUpdateDossierTemplateRequest;
|
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.CreateOrUpdateDossierTemplateRequest;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DossierTemplate;
|
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DossierTemplate;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
@ -17,8 +18,6 @@ public interface DossierTemplateResource {
|
|||||||
|
|
||||||
String USER_ID_PARAM = "userId";
|
String USER_ID_PARAM = "userId";
|
||||||
|
|
||||||
String NAME_OF_CLONED_TOSSIER_TEMPLATE = "nameOfClonedDossierTemplate";
|
|
||||||
|
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
@ResponseStatus(HttpStatus.ACCEPTED)
|
@ResponseStatus(HttpStatus.ACCEPTED)
|
||||||
@PostMapping(value = DOSSIER_TEMPLATE_PATH, consumes = MediaType.APPLICATION_JSON_VALUE)
|
@PostMapping(value = DOSSIER_TEMPLATE_PATH, consumes = MediaType.APPLICATION_JSON_VALUE)
|
||||||
@ -41,7 +40,7 @@ public interface DossierTemplateResource {
|
|||||||
|
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
@ResponseStatus(HttpStatus.OK)
|
@ResponseStatus(HttpStatus.OK)
|
||||||
@PostMapping(value = DOSSIER_TEMPLATE_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE + "/clone", produces = MediaType.APPLICATION_JSON_VALUE)
|
@PostMapping(value = DOSSIER_TEMPLATE_PATH + "/clone", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||||
DossierTemplate cloneDossierTemplate(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, @RequestParam(value = NAME_OF_CLONED_TOSSIER_TEMPLATE) String nameOfClonedDossierTemplate, @RequestParam(USER_ID_PARAM) String cloningUserId);
|
DossierTemplate cloneDossierTemplate(@RequestBody CloneDossierTemplateRequest cloneDossierTemplateRequest);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -31,6 +31,7 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist
|
|||||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ReportTemplatePersistenceService;
|
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ReportTemplatePersistenceService;
|
||||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.RulesPersistenceService;
|
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.RulesPersistenceService;
|
||||||
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.service.v1.api.model.dossiertemplate.CloneDossierTemplateRequest;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DossierTemplateStatus;
|
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DossierTemplateStatus;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierStatusRequest;
|
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierStatusRequest;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.legalbasis.LegalBasis;
|
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.legalbasis.LegalBasis;
|
||||||
@ -60,26 +61,26 @@ public class DossierTemplateCloneService {
|
|||||||
private final DossierStatusPersistenceService dossierStatusPersistenceService;
|
private final DossierStatusPersistenceService dossierStatusPersistenceService;
|
||||||
|
|
||||||
|
|
||||||
public DossierTemplateEntity cloneDossierTemplate(String dossierTemplateId, String nameOfClonedDossierTemplate, String cloningUserId) {
|
public DossierTemplateEntity cloneDossierTemplate(CloneDossierTemplateRequest cloneDossierTemplateRequest) {
|
||||||
|
|
||||||
dossierTemplatePersistenceService.validateDossierTemplateNameIsUnique(nameOfClonedDossierTemplate);
|
dossierTemplatePersistenceService.validateDossierTemplateNameIsUnique(cloneDossierTemplateRequest.getNameOfClonedDossierTemplate());
|
||||||
|
|
||||||
DossierTemplateEntity clonedDossierTemplate = new DossierTemplateEntity();
|
DossierTemplateEntity clonedDossierTemplate = new DossierTemplateEntity();
|
||||||
|
|
||||||
dossierTemplateRepository.findById(dossierTemplateId).ifPresentOrElse((dossierTemplate) -> {
|
dossierTemplateRepository.findById(cloneDossierTemplateRequest.getDossierTemplateId()).ifPresentOrElse((dossierTemplate) -> {
|
||||||
|
|
||||||
OffsetDateTime now = OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS);
|
OffsetDateTime now = OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS);
|
||||||
clonedDossierTemplate.setId(UUID.randomUUID().toString());
|
clonedDossierTemplate.setId(UUID.randomUUID().toString());
|
||||||
clonedDossierTemplate.setName(nameOfClonedDossierTemplate);
|
clonedDossierTemplate.setName(cloneDossierTemplateRequest.getNameOfClonedDossierTemplate());
|
||||||
clonedDossierTemplate.setDescription(dossierTemplate.getDescription());
|
clonedDossierTemplate.setDescription(cloneDossierTemplateRequest.getDescription() == null || cloneDossierTemplateRequest.getDescription().isEmpty() ? dossierTemplate.getDescription() : cloneDossierTemplateRequest.getDescription());
|
||||||
clonedDossierTemplate.setDateAdded(now);
|
clonedDossierTemplate.setDateAdded(now);
|
||||||
clonedDossierTemplate.setDateModified(now);
|
clonedDossierTemplate.setDateModified(now);
|
||||||
clonedDossierTemplate.setCreatedBy(cloningUserId);
|
clonedDossierTemplate.setCreatedBy(cloneDossierTemplateRequest.getCloningUserId());
|
||||||
clonedDossierTemplate.setModifiedBy(cloningUserId);
|
clonedDossierTemplate.setModifiedBy(cloneDossierTemplateRequest.getCloningUserId());
|
||||||
clonedDossierTemplate.setValidFrom(dossierTemplate.getValidFrom());
|
clonedDossierTemplate.setValidFrom(cloneDossierTemplateRequest.getValidFrom() == null ? dossierTemplate.getValidFrom() : cloneDossierTemplateRequest.getValidFrom());
|
||||||
clonedDossierTemplate.setValidTo(dossierTemplate.getValidTo());
|
clonedDossierTemplate.setValidTo(cloneDossierTemplateRequest.getValidTo() == null ? dossierTemplate.getValidTo() : cloneDossierTemplateRequest.getValidTo());
|
||||||
clonedDossierTemplate.setSoftDeleteTime(dossierTemplate.getSoftDeleteTime());
|
clonedDossierTemplate.setSoftDeleteTime(dossierTemplate.getSoftDeleteTime());
|
||||||
clonedDossierTemplate.setDownloadFileTypes(dossierTemplate.getDownloadFileTypes());
|
clonedDossierTemplate.setDownloadFileTypes(cloneDossierTemplateRequest.getDownloadFileTypes() == null || cloneDossierTemplateRequest.getDownloadFileTypes().isEmpty() ? dossierTemplate.getDownloadFileTypes() : cloneDossierTemplateRequest.getDownloadFileTypes());
|
||||||
|
|
||||||
//set rules
|
//set rules
|
||||||
cloneRules(dossierTemplate.getId(), clonedDossierTemplate.getId());
|
cloneRules(dossierTemplate.getId(), clonedDossierTemplate.getId());
|
||||||
@ -116,7 +117,7 @@ public class DossierTemplateCloneService {
|
|||||||
dossierTemplateRepository.save(clonedDossierTemplate);
|
dossierTemplateRepository.save(clonedDossierTemplate);
|
||||||
|
|
||||||
}, () -> {
|
}, () -> {
|
||||||
throw new NotFoundException(String.format(dossierTemplatePersistenceService.DOSSIER_TEMPLATE_NOT_FOUND_MESSAGE, dossierTemplateId));
|
throw new NotFoundException(String.format(dossierTemplatePersistenceService.DOSSIER_TEMPLATE_NOT_FOUND_MESSAGE, cloneDossierTemplateRequest.getDossierTemplateId()));
|
||||||
});
|
});
|
||||||
return clonedDossierTemplate;
|
return clonedDossierTemplate;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package com.iqser.red.service.peristence.v1.server.controller;
|
|||||||
|
|
||||||
import com.iqser.red.service.persistence.management.v1.processor.service.DossierTemplateCloneService;
|
import com.iqser.red.service.persistence.management.v1.processor.service.DossierTemplateCloneService;
|
||||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierTemplatePersistenceService;
|
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierTemplatePersistenceService;
|
||||||
|
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.CloneDossierTemplateRequest;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.CreateOrUpdateDossierTemplateRequest;
|
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.CreateOrUpdateDossierTemplateRequest;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DossierTemplate;
|
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DossierTemplate;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.resources.DossierTemplateResource;
|
import com.iqser.red.service.persistence.service.v1.api.resources.DossierTemplateResource;
|
||||||
@ -46,7 +47,7 @@ public class DossierTemplateController implements DossierTemplateResource {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DossierTemplate cloneDossierTemplate(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, String nameOfClonedDossierTemplate, String cloningUserId) {
|
public DossierTemplate cloneDossierTemplate(@RequestBody CloneDossierTemplateRequest cloneDossierTemplateRequest) {
|
||||||
return convert(dossierTemplateCloneService.cloneDossierTemplate(dossierTemplateId, nameOfClonedDossierTemplate, cloningUserId), DossierTemplate.class);
|
return convert(dossierTemplateCloneService.cloneDossierTemplate(cloneDossierTemplateRequest), DossierTemplate.class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -244,7 +244,8 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
|
|||||||
assertThat(allTemplates.size()).isEqualTo(1);
|
assertThat(allTemplates.size()).isEqualTo(1);
|
||||||
assertThat(allTemplates.get(0)).isEqualTo(dossierTemplate);
|
assertThat(allTemplates.get(0)).isEqualTo(dossierTemplate);
|
||||||
|
|
||||||
var clonedDT = dossierTemplateClient.cloneDossierTemplate(dossierTemplate.getId(), "Clone of " + dossierTemplate.getName(), "user");
|
CloneDossierTemplateRequest cdtr = CloneDossierTemplateRequest.builder().dossierTemplateId(dossierTemplate.getId()).nameOfClonedDossierTemplate("Clone of " + dossierTemplate.getName()).cloningUserId("user").build();
|
||||||
|
var clonedDT = dossierTemplateClient.cloneDossierTemplate(cdtr);
|
||||||
assertThat(clonedDT.getName()).isEqualTo("Clone of " + dossierTemplate.getName());
|
assertThat(clonedDT.getName()).isEqualTo("Clone of " + dossierTemplate.getName());
|
||||||
|
|
||||||
var loadedTemplate = dossierTemplateClient.getDossierTemplate(clonedDT.getId());
|
var loadedTemplate = dossierTemplateClient.getDossierTemplate(clonedDT.getId());
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user