Dossier Status Self name

This commit is contained in:
Timo Bejan 2022-02-01 15:20:32 +02:00
parent a3e42db426
commit f55db3eaf4
2 changed files with 10 additions and 4 deletions

View File

@ -30,14 +30,15 @@ public class DossierStatusPersistenceService {
if (createOrUpdateDossierStatusRequest.getDossierStatusId() != null) { //update
Optional<DossierStatusEntity> dossierStatus = dossierStatusRepository.findById(createOrUpdateDossierStatusRequest.getDossierStatusId());
if (dossierStatus.isPresent()) {
validateDossierTemplateNameIsUnique(createOrUpdateDossierStatusRequest.getName(), createOrUpdateDossierStatusRequest.getDossierTemplateId());
validateDossierTemplateNameIsUnique(createOrUpdateDossierStatusRequest.getName(), createOrUpdateDossierStatusRequest.getDossierTemplateId(),
createOrUpdateDossierStatusRequest.getDossierStatusId());
BeanUtils.copyProperties(createOrUpdateDossierStatusRequest, dossierStatus.get());
return dossierStatus.get();
} else {
throw new NotFoundException(String.format(DOSSIER_STATUS_NOT_FOUND_MESSAGE, createOrUpdateDossierStatusRequest.getDossierStatusId()));
}
} else {
validateDossierTemplateNameIsUnique(createOrUpdateDossierStatusRequest.getName(), createOrUpdateDossierStatusRequest.getDossierTemplateId());
validateDossierTemplateNameIsUnique(createOrUpdateDossierStatusRequest.getName(), createOrUpdateDossierStatusRequest.getDossierTemplateId(),null);
DossierStatusEntity dossierStatus = new DossierStatusEntity();
dossierStatus.setId(UUID.randomUUID().toString());
BeanUtils.copyProperties(createOrUpdateDossierStatusRequest, dossierStatus);
@ -88,9 +89,9 @@ public class DossierStatusPersistenceService {
dossierStatusRepository.deleteById(dossierStatusId);
}
public void validateDossierTemplateNameIsUnique(String dossierStatusName, String dossierTemplateId) {
public void validateDossierTemplateNameIsUnique(String dossierStatusName, String dossierTemplateId, String dossierStatusId) {
getAllDossierStatusForTemplate(dossierTemplateId).forEach(existing -> {
if (existing.getName().equals(dossierStatusName)) {
if (existing.getName().equals(dossierStatusName) && !existing.getId().equals(dossierStatusId)) {
throw new ConflictException("DossierStatus name must be unique within the same dossier template");
}
});

View File

@ -43,6 +43,11 @@ public class DossierStatusTest extends AbstractPersistenceServerServiceTest {
var loadedDossierStatus = dossierStatusClient.createOrUpdateDossierStatus(crudsr);
assertThat(loadedDossierStatus).isNotNull();
crudsr.setDossierStatusId(loadedDossierStatus.getId());
crudsr.setDescription("New Description");
var updatedStatus = dossierStatusClient.createOrUpdateDossierStatus(crudsr);
assertThat(updatedStatus).isNotNull();
allDossierStatus = dossierStatusClient.getAllDossierStatusForTemplate(dossierTemplate.getId());
assertThat(allDossierStatus.size()).isEqualTo(1);