fixed corner cases

This commit is contained in:
Timo Bejan 2022-02-09 11:31:36 +02:00
parent a4f4160969
commit b47bb61ac6

View File

@ -8,6 +8,7 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist
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.DossierStatusInfo;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
@ -27,6 +28,10 @@ public class DossierStatusPersistenceService {
@Transactional
public DossierStatusEntity createOrUpdateDossierStatus(CreateOrUpdateDossierStatusRequest createOrUpdateDossierStatusRequest) {
if (StringUtils.isBlank(createOrUpdateDossierStatusRequest.getName())) {
throw new BadRequestException("Dossier Status Name cannot be empty");
}
if (createOrUpdateDossierStatusRequest.getDossierStatusId() != null) { //update
Optional<DossierStatusEntity> dossierStatus = dossierStatusRepository.findById(createOrUpdateDossierStatusRequest.getDossierStatusId());
if (dossierStatus.isPresent()) {
@ -38,7 +43,7 @@ public class DossierStatusPersistenceService {
throw new NotFoundException(String.format(DOSSIER_STATUS_NOT_FOUND_MESSAGE, createOrUpdateDossierStatusRequest.getDossierStatusId()));
}
} else {
validateDossierTemplateNameIsUnique(createOrUpdateDossierStatusRequest.getName(), createOrUpdateDossierStatusRequest.getDossierTemplateId(),null);
validateDossierTemplateNameIsUnique(createOrUpdateDossierStatusRequest.getName(), createOrUpdateDossierStatusRequest.getDossierTemplateId(), null);
DossierStatusEntity dossierStatus = new DossierStatusEntity();
dossierStatus.setId(UUID.randomUUID().toString());
BeanUtils.copyProperties(createOrUpdateDossierStatusRequest, dossierStatus);
@ -69,7 +74,7 @@ public class DossierStatusPersistenceService {
throw new BadRequestException("Cannot replace with self");
}
dossierStatusRepository.findById(dossierStatusId).ifPresent(toDeleteDossierStatus -> {
dossierStatusRepository.findById(dossierStatusId).ifPresentOrElse(toDeleteDossierStatus -> {
DossierStatusEntity replaceDossierStatusEntity = null;
if (replaceDossierStatusId != null) {
@ -83,8 +88,12 @@ public class DossierStatusPersistenceService {
for (var dossier : toDeleteDossierStatus.getDossiers()) {
dossier.setDossierStatus(replaceDossierStatusEntity);
}
dossierStatusRepository.deleteById(dossierStatusId);
}, () -> {
throw new NotFoundException("Dossier Status not found");
});
dossierStatusRepository.deleteById(dossierStatusId);
}
private void validateDossierTemplateNameIsUnique(String dossierStatusName, String dossierTemplateId, String dossierStatusId) {