diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java index 81aa20a1..29d198fd 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java @@ -15,6 +15,7 @@ import net.gepafin.tendermanagement.model.request.FieldRequest; import net.gepafin.tendermanagement.model.response.*; import net.gepafin.tendermanagement.repositories.*; import net.gepafin.tendermanagement.service.ApplicationService; +import net.gepafin.tendermanagement.service.CallService; import net.gepafin.tendermanagement.service.UserService; import net.gepafin.tendermanagement.util.Utils; import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException; @@ -46,6 +47,8 @@ public class ApplicationEvaluationDao { @Autowired private UserService userService; +// @Autowired +// private CallService callService; @Autowired private EvaluationCriteriaRepository evaluationCriteriaRepository; @@ -193,6 +196,7 @@ public class ApplicationEvaluationDao { .findFirst() .ifPresent(contentBean -> { mappedField.setFieldLabel(getLabelForField(contentBean)); + mappedField.setFieldName(contentBean.getName()); switch (contentBean.getName()) { case "fileupload": mapFileFieldDetails(mappedField, formFieldId, applicationForm.getId(), applicationId); @@ -458,12 +462,16 @@ public class ApplicationEvaluationDao { private List processCriteria(ApplicationEvaluationEntity entity, ApplicationEvaluationRequest req) { - List existingCriteriaList = entity.getCriteria() != null ? Utils.convertJsonToList(entity.getCriteria(), new TypeReference>() { - }) : new ArrayList<>(); + List incomingCriteriaList = Optional.ofNullable(req.getCriteria()).orElse(new ArrayList<>()); - Map existingCriteriaMap = existingCriteriaList.stream().collect(Collectors.toMap(CriteriaResponse::getId, criteria -> criteria)); + List existingCriteriaList = entity.getCriteria() != null ? + Utils.convertJsonToList(entity.getCriteria(), new TypeReference>() {}) : + new ArrayList<>(); - List updatedCriteriaList = req.getCriteria().stream().map(incoming -> { + Map existingCriteriaMap = existingCriteriaList.stream() + .collect(Collectors.toMap(CriteriaResponse::getId, criteria -> criteria)); + + List updatedCriteriaList = incomingCriteriaList.stream().map(incoming -> { CriteriaRequest request = new CriteriaRequest(); request.setId(incoming.getId()); request.setScore(incoming.getScore()); @@ -471,14 +479,15 @@ public class ApplicationEvaluationDao { CriteriaResponse existingCriteria = existingCriteriaMap.get(incoming.getId()); if (existingCriteria != null) { - request.setScore(incoming.getScore() != null ? incoming.getScore() : null); - request.setValid(incoming.getValid() != null ? incoming.getValid() : null); + request.setScore(incoming.getScore() != null ? incoming.getScore() : existingCriteria.getScore()); + request.setValid(incoming.getValid() != null ? incoming.getValid() : existingCriteria.getValid()); } return request; }).collect(Collectors.toList()); List missingCriteriaRequests = existingCriteriaList.stream() - .filter(existing -> !updatedCriteriaList.stream().map(CriteriaRequest::getId).toList().contains(existing.getId())).map(existing -> { + .filter(existing -> !updatedCriteriaList.stream().map(CriteriaRequest::getId).toList().contains(existing.getId())) + .map(existing -> { CriteriaRequest request = new CriteriaRequest(); request.setId(existing.getId()); request.setScore(existing.getScore()); @@ -492,58 +501,65 @@ public class ApplicationEvaluationDao { private List processChecklist(ApplicationEvaluationEntity entity, ApplicationEvaluationRequest req) { + List incomingChecklistList = Optional.ofNullable(req.getChecklist()).orElse(new ArrayList<>()); + List existingChecklistList = entity.getChecklist() != null ? - Utils.convertJsonToList(entity.getChecklist(), new TypeReference>() { - }) : + Utils.convertJsonToList(entity.getChecklist(), new TypeReference>() {}) : new ArrayList<>(); - Map existingChecklistMap = existingChecklistList.stream().collect(Collectors.toMap(ChecklistResponse::getId, checklist -> checklist)); + Map existingChecklistMap = existingChecklistList.stream() + .collect(Collectors.toMap(ChecklistResponse::getId, checklist -> checklist)); - List updatedChecklistList = req.getChecklist().stream().map(incoming -> { + List updatedChecklistList = incomingChecklistList.stream().map(incoming -> { ChecklistRequest request = new ChecklistRequest(); request.setId(incoming.getId()); request.setValid(incoming.getValid()); ChecklistResponse existingChecklist = existingChecklistMap.get(incoming.getId()); if (existingChecklist != null && incoming.getValid() == null) { - request.setValid(null); + request.setValid(existingChecklist.getValid()); } return request; }).collect(Collectors.toList()); List missingChecklistRequests = existingChecklistList.stream() - .filter(existing -> !updatedChecklistList.stream().map(ChecklistRequest::getId).toList().contains(existing.getId())).map(existing -> { + .filter(existing -> !updatedChecklistList.stream().map(ChecklistRequest::getId).toList().contains(existing.getId())) + .map(existing -> { ChecklistRequest request = new ChecklistRequest(); request.setId(existing.getId()); - request.setValid(existing.getValid() != null ? existing.getValid() : null); + request.setValid(existing.getValid()); return request; }).toList(); updatedChecklistList.addAll(missingChecklistRequests); return updatedChecklistList; } - private List processField(ApplicationEvaluationEntity entity, ApplicationEvaluationRequest req) { - List existingFieldList = entity.getFile() != null ? Utils.convertJsonToList(entity.getFile(), new TypeReference>() { - }) : new ArrayList<>(); + List incomingFieldList = Optional.ofNullable(req.getFiles()).orElse(new ArrayList<>()); - Map existingFieldMap = existingFieldList.stream().collect(Collectors.toMap(FieldResponse::getId, field -> field)); + List existingFieldList = entity.getFile() != null ? + Utils.convertJsonToList(entity.getFile(), new TypeReference>() {}) : + new ArrayList<>(); - List updatedFieldList = req.getFiles().stream().map(incoming -> { + Map existingFieldMap = existingFieldList.stream() + .collect(Collectors.toMap(FieldResponse::getId, field -> field)); + + List updatedFieldList = incomingFieldList.stream().map(incoming -> { FieldRequest request = new FieldRequest(); request.setId(incoming.getId()); request.setValid(incoming.getValid()); FieldResponse existingField = existingFieldMap.get(incoming.getId()); if (existingField != null) { - request.setValid(incoming.getValid() != null ? incoming.getValid() : null); + request.setValid(incoming.getValid() != null ? incoming.getValid() : existingField.getValid()); } return request; }).collect(Collectors.toList()); List missingFieldRequests = existingFieldList.stream() - .filter(existing -> !updatedFieldList.stream().map(FieldRequest::getId).toList().contains(existing.getId())).map(existing -> { + .filter(existing -> !updatedFieldList.stream().map(FieldRequest::getId).toList().contains(existing.getId())) + .map(existing -> { FieldRequest request = new FieldRequest(); request.setId(existing.getId()); request.setValid(existing.getValid()); @@ -700,6 +716,7 @@ public class ApplicationEvaluationDao { List contentResponseBeans = formDao.convertFormEntityToFormResponseBean(formEntity).getContent(); contentResponseBeans.stream().filter(bean -> bean.getId().equals(formFieldId)).findFirst().ifPresent(contentResponseBean -> { String label = getLabel(contentResponseBean); + mappedField.setFieldName(contentResponseBean.getName()); mappedField.setFieldLabel(label); switch (contentResponseBean.getName()) { case "fileupload": @@ -995,7 +1012,7 @@ public class ApplicationEvaluationDao { String label = getLabelFromSettings(contentResponseBean); mappedField.setFieldLabel(label); - + mappedField.setFieldName(contentResponseBean.getName()); boolean isCheckbox = "checkboxes".equals(contentResponseBean.getName()); boolean isFileUpload = "fileupload".equals(contentResponseBean.getName()); boolean isParagraph = "paragraph".equals(contentResponseBean.getName()); @@ -1278,6 +1295,8 @@ public class ApplicationEvaluationDao { if (existingEntityOptional.isPresent()) { ApplicationEvaluationEntity existingEntity = existingEntityOptional.get(); +// UserEntity userEntity = userService.validateUser(application.getUserId()); +// callService.validatePublishedCall(application.getCall().getId(), userEntity.getHub().getId()); application.setStatus(newStatus.getValue()); application = applicationRepository.save(application); String statusType = application.getStatus(); diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/CriteriaMappedField.java b/src/main/java/net/gepafin/tendermanagement/model/response/CriteriaMappedField.java index e94e0f73..d730d308 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/response/CriteriaMappedField.java +++ b/src/main/java/net/gepafin/tendermanagement/model/response/CriteriaMappedField.java @@ -6,6 +6,7 @@ import lombok.Data; @Data public class CriteriaMappedField { private String id; + private String fieldName; private String fieldLabel; private Object fieldValue; }