RED-3240 - Dossier Status

- update the endpoint to get the dossier status list for templated id
- add validation of unique name within the same dossier template id
This commit is contained in:
devplant 2022-02-01 14:45:43 +02:00
parent f1181177d4
commit fd4129e550
3 changed files with 15 additions and 4 deletions

View File

@ -12,6 +12,7 @@ public interface DossierStatusResource {
String DOSSIER_STATUS_PATH = "/dossier-status";
String DOSSIER_TEMPLATE_PATH = "/dossier-template";
String DOSSIER_TEMPLATE_ID = "dossierTemplateId";
String DOSSIER_TEMPLATE_ID_PATH_VARIABLE = "/{" + DOSSIER_TEMPLATE_ID + "}";
@ -32,7 +33,7 @@ public interface DossierStatusResource {
@ResponseBody
@ResponseStatus(value = HttpStatus.OK)
@GetMapping(value = DOSSIER_STATUS_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE)
@GetMapping(value = DOSSIER_STATUS_PATH + DOSSIER_TEMPLATE_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE)
List<DossierStatusInfo> getAllDossierStatusForTemplate(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId);
@ResponseBody

View File

@ -2,6 +2,7 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persis
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierStatusEntity;
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.NotFoundException;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierStatusRepository;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierStatusRequest;
@ -28,13 +29,14 @@ public class DossierStatusPersistenceService {
if (createOrUpdateDossierStatusRequest.getDossierStatusId() != null) { //update
Optional<DossierStatusEntity> dossierStatus = dossierStatusRepository.findById(createOrUpdateDossierStatusRequest.getDossierStatusId());
if (dossierStatus.isPresent()) {
validateDossierTemplateNameIsUnique(createOrUpdateDossierStatusRequest.getName(), createOrUpdateDossierStatusRequest.getDossierTemplateId());
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());
DossierStatusEntity dossierStatus = new DossierStatusEntity();
dossierStatus.setId(UUID.randomUUID().toString());
BeanUtils.copyProperties(createOrUpdateDossierStatusRequest, dossierStatus);
@ -79,4 +81,12 @@ public class DossierStatusPersistenceService {
});
dossierStatusRepository.deleteById(dossierStatusId);
}
public void validateDossierTemplateNameIsUnique(String dossierStatusName, String dossierTemplateId) {
getAllDossierStatusForTemplate(dossierTemplateId).forEach(existing -> {
if (existing.getName().equals(dossierStatusName)) {
throw new ConflictException("DossierStatus name must be unique within the same dossier template");
}
});
}
}

View File

@ -35,7 +35,7 @@ public class DossierStatusController implements DossierStatusResource {
@Override
public List<DossierStatusInfo> getAllDossierStatusForTemplate(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId) {
return convert(dossierStatusPersistenceService.getAllDossierStatus(), DossierStatusInfo.class);
return convert(dossierStatusPersistenceService.getAllDossierStatusForTemplate(dossierTemplateId), DossierStatusInfo.class);
}
@Override
@ -46,6 +46,6 @@ public class DossierStatusController implements DossierStatusResource {
@Override
public void deleteDossierStatus(String dossierStatusId, @RequestParam(value = DOSSIER_STATUS_REPLACE_ID, required = false) String replaceDossierStatusId) {
dossierStatusPersistenceService.deleteDossierStatus(dossierStatusId,replaceDossierStatusId);
dossierStatusPersistenceService.deleteDossierStatus(dossierStatusId, replaceDossierStatusId);
}
}