added code to prevent status association with wrong template

This commit is contained in:
Timo Bejan 2022-01-31 10:20:33 +02:00
parent db4a31180a
commit 4162efe290
2 changed files with 16 additions and 7 deletions

View File

@ -46,13 +46,10 @@ public class DossierPersistenceService {
dossier.setDate(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
dossier.setLastUpdated(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
dossier.setDossierTemplate(dossierTemplateRepository.getOne(createOrUpdateDossierRequest.getDossierTemplateId()));
if(createOrUpdateDossierRequest.getDossierStatusId() != null) {
//TODO: make other verifications that the dossierStatus matches the dossierTemplateId?
dossier.setDossierStatus(dossierStatusPersistenceService.getDossierStatus(createOrUpdateDossierRequest.getDossierStatusId()));
}
var reportTemplates = reportTemplateRepository.findAllById(createOrUpdateDossierRequest.getReportTemplateIds());
reportTemplates.forEach(r -> r.getDossiers().add(dossier));
dossier.setReportTemplates(reportTemplates);
this.handleDossierStatus(createOrUpdateDossierRequest, dossier);
return dossierRepository.save(dossier);
@ -76,13 +73,24 @@ public class DossierPersistenceService {
}
});
dossier.setReportTemplates(reportTemplates);
if (createOrUpdateDossierRequest.getDossierStatusId() != null) {
dossier.setDossierStatus(dossierStatusPersistenceService.getDossierStatus(createOrUpdateDossierRequest.getDossierStatusId()));
}
this.handleDossierStatus(createOrUpdateDossierRequest, dossier);
});
}
private void handleDossierStatus(CreateOrUpdateDossierRequest createOrUpdateDossierRequest, DossierEntity dossier) {
if (createOrUpdateDossierRequest.getDossierStatusId() != null) {
var dossierStatus = dossierStatusPersistenceService.getDossierStatus(createOrUpdateDossierRequest.getDossierStatusId());
if (dossierStatus.getDossierTemplateId().equals(createOrUpdateDossierRequest.getDossierTemplateId())) {
dossier.setDossierStatus(dossierStatus);
} else {
throw new BadRequestException("Invalid Dossier Status");
}
} else {
dossier.setDossierStatus(null);
}
}
public DossierEntity getAndValidateDossier(String dossierId) {
// check whether the dossierId exists and is not deleted

View File

@ -19,6 +19,7 @@ import static com.iqser.red.service.persistence.management.v1.processor.utils.Ma
public class DossierStatusController implements DossierStatusResource {
private final DossierStatusPersistenceService dossierStatusPersistenceService;
@Override
public DossierStatusInfo createOrUpdateDossierStatus(CreateOrUpdateDossierStatusRequest dossierStatusRequest) {
return convert(dossierStatusPersistenceService.createOrUpdateDossierStatus(dossierStatusRequest), DossierStatusInfo.class);