RED-3246: As an admin I want to clone a dossier template
This commit is contained in:
parent
1c4012d471
commit
62a0a74abe
@ -17,6 +17,8 @@ public interface DossierTemplateResource {
|
||||
|
||||
String USER_ID_PARAM = "userId";
|
||||
|
||||
String NAME_OF_CLONED_TOSSIER_TEMPLATE = "nameOfClonedDossierTemplate";
|
||||
|
||||
@ResponseBody
|
||||
@ResponseStatus(HttpStatus.ACCEPTED)
|
||||
@PostMapping(value = DOSSIER_TEMPLATE_PATH, consumes = MediaType.APPLICATION_JSON_VALUE)
|
||||
@ -37,4 +39,9 @@ public interface DossierTemplateResource {
|
||||
@DeleteMapping(value = DOSSIER_TEMPLATE_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE)
|
||||
void deleteDossierTemplate(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, @RequestParam(USER_ID_PARAM) String deletingUserId);
|
||||
|
||||
@ResponseBody
|
||||
@ResponseStatus(HttpStatus.OK)
|
||||
@PostMapping(value = DOSSIER_TEMPLATE_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE + "/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);
|
||||
|
||||
}
|
||||
|
||||
@ -1,5 +1,16 @@
|
||||
package com.iqser.red.service.persistence.management.v1.processor.service.persistence;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
import javax.transaction.Transactional;
|
||||
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.exception.ConflictException;
|
||||
@ -7,17 +18,8 @@ import com.iqser.red.service.persistence.management.v1.processor.exception.NotFo
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierTemplateRepository;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.CreateOrUpdateDossierTemplateRequest;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DossierTemplateStatus;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.transaction.Transactional;
|
||||
import java.time.OffsetDateTime;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@ -130,4 +132,29 @@ public class DossierTemplatePersistenceService {
|
||||
}
|
||||
|
||||
|
||||
public DossierTemplateEntity cloneDossierTemplate(String dossierTemplateId, String nameOfClonedDossierTemplate, String cloningUserId) {
|
||||
|
||||
validateDossierTemplateNameIsUnique(nameOfClonedDossierTemplate);
|
||||
|
||||
DossierTemplateEntity clonedDossierTemplate = new DossierTemplateEntity();
|
||||
|
||||
dossierTemplateRepository.findById(dossierTemplateId).ifPresentOrElse((dossierTemplate) -> {
|
||||
BeanUtils.copyProperties(dossierTemplate, clonedDossierTemplate);
|
||||
OffsetDateTime now = OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS);
|
||||
clonedDossierTemplate.setId(UUID.randomUUID().toString());
|
||||
clonedDossierTemplate.setName(nameOfClonedDossierTemplate);
|
||||
clonedDossierTemplate.setCreatedBy(cloningUserId);
|
||||
clonedDossierTemplate.setModifiedBy(cloningUserId);
|
||||
clonedDossierTemplate.setDateAdded(now);
|
||||
clonedDossierTemplate.setDateModified(now);
|
||||
clonedDossierTemplate.setDossierTemplateStatus(DossierTemplateStatus.valueOf(computeDossierTemplateStatus(clonedDossierTemplate).name()));
|
||||
|
||||
dossierTemplateRepository.save(clonedDossierTemplate);
|
||||
|
||||
}, () -> {
|
||||
throw new NotFoundException(String.format(DOSSIER_TEMPLATE_NOT_FOUND_MESSAGE, dossierTemplateId));
|
||||
});
|
||||
return clonedDossierTemplate;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -42,4 +42,9 @@ public class DossierTemplateController implements DossierTemplateResource {
|
||||
public void deleteDossierTemplate(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, @RequestParam(USER_ID_PARAM) String deletingUserId) {
|
||||
dossierTemplatePersistenceService.deleteDossierTemplate(dossierTemplateId, deletingUserId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DossierTemplate cloneDossierTemplate(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, String nameOfClonedDossierTemplate, String cloningUserId) {
|
||||
return convert(dossierTemplatePersistenceService.cloneDossierTemplate(dossierTemplateId, nameOfClonedDossierTemplate, cloningUserId), DossierTemplate.class);
|
||||
}
|
||||
}
|
||||
|
||||
@ -88,5 +88,26 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testCloneDossierTemplate() {
|
||||
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
|
||||
|
||||
var allTemplates = dossierTemplateClient.getAllDossierTemplates();
|
||||
assertThat(allTemplates.size()).isEqualTo(1);
|
||||
assertThat(allTemplates.get(0)).isEqualTo(dossierTemplate);
|
||||
|
||||
var clonedDT = dossierTemplateClient.cloneDossierTemplate(dossierTemplate.getId(), "Clone of " + dossierTemplate.getName(), "user");
|
||||
assertThat(clonedDT.getName()).isEqualTo("Clone of " + dossierTemplate.getName());
|
||||
|
||||
var loadedTemplate = dossierTemplateClient.getDossierTemplate(clonedDT.getId());
|
||||
assertThat(loadedTemplate).isEqualTo(clonedDT);
|
||||
assertThat(loadedTemplate.getId()).isEqualTo(clonedDT.getId());
|
||||
assertThat(loadedTemplate.getDescription()).isEqualTo(dossierTemplate.getDescription());
|
||||
assertThat(loadedTemplate.getValidFrom()).isEqualTo(dossierTemplate.getValidFrom());
|
||||
assertThat(loadedTemplate.getValidTo()).isEqualTo(dossierTemplate.getValidTo());
|
||||
assertThat(loadedTemplate.getDownloadFileTypes()).isEqualTo(dossierTemplate.getDownloadFileTypes());
|
||||
assertThat(loadedTemplate.getModifiedBy()).isEqualTo("user");
|
||||
assertThat(loadedTemplate.getCreatedBy()).isEqualTo("user");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user