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 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)
|
||||||
@ -37,4 +39,9 @@ public interface DossierTemplateResource {
|
|||||||
@DeleteMapping(value = DOSSIER_TEMPLATE_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE)
|
@DeleteMapping(value = DOSSIER_TEMPLATE_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE)
|
||||||
void deleteDossierTemplate(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, @RequestParam(USER_ID_PARAM) String deletingUserId);
|
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;
|
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.entity.dossier.DossierTemplateEntity;
|
||||||
import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException;
|
import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException;
|
||||||
import com.iqser.red.service.persistence.management.v1.processor.exception.ConflictException;
|
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.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.CreateOrUpdateDossierTemplateRequest;
|
||||||
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 lombok.RequiredArgsConstructor;
|
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
|
@Service
|
||||||
@RequiredArgsConstructor
|
@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) {
|
public void deleteDossierTemplate(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, @RequestParam(USER_ID_PARAM) String deletingUserId) {
|
||||||
dossierTemplatePersistenceService.deleteDossierTemplate(dossierTemplateId, 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