From 03971f2685e77593b94f4d95e288b86eab9da92d Mon Sep 17 00:00:00 2001 From: harish Date: Sun, 27 Oct 2024 19:00:38 +0530 Subject: [PATCH 1/2] Done ticket GEPAFINBE-62 --- .../constants/GepafinConstant.java | 2 +- .../dao/ApplicationEvaluationDao.java | 224 +++++++++++------- .../ApplicationEvaluationResponse.java | 2 + .../ApplicationEvaluationRepository.java | 5 +- .../AssignedApplicationsRepository.java | 16 +- .../service/ApplicationEvaluationService.java | 4 +- .../ApplicationEvaluationServiceImpl.java | 68 ++++-- .../rest/api/ApplicationEvaluationApi.java | 21 +- .../ApplicationEvaluationApiController.java | 15 +- src/main/resources/message_en.properties | 2 +- src/main/resources/message_it.properties | 1 + 11 files changed, 230 insertions(+), 130 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java index 91a87667..5d4cee2a 100644 --- a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java +++ b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java @@ -241,7 +241,7 @@ public class GepafinConstant { public static final String APPLICATION_EVALUATION_NOT_FOUND = "application.evaluation.not.found"; public static final String APPLICATION_EVALUATION_STATUS_UPDATED_SUCCESSFULLY = "application.evaluation.status.updated.successfully"; public static final String ASSIGNED_APPLICATION_NOT_FOUND_WITH_ID_MSG = "assigned.application.not.found.with.id"; - + public static final String EITHER_APPLICATION_OR_ASSIGNED_APPLICATION_ID_REQUIRED_MSG = "either.application.or.assigned.application.id.required"; public static final String APPLICATION_ASSIGNED= "application.assigned.success.msg"; public static final String APPLICATION_ALREADY_ASSIGNED = "application.already.assigned.msg"; diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java index cf64291a..99068a63 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java @@ -4,9 +4,7 @@ import com.fasterxml.jackson.core.type.TypeReference; import net.gepafin.tendermanagement.config.Translator; import net.gepafin.tendermanagement.constants.GepafinConstant; import net.gepafin.tendermanagement.entities.*; -import net.gepafin.tendermanagement.enums.ApplicationEvaluationStatusTypeEnum; -import net.gepafin.tendermanagement.enums.DocumentSourceTypeEnum; -import net.gepafin.tendermanagement.enums.DocumentTypeEnum; +import net.gepafin.tendermanagement.enums.*; import net.gepafin.tendermanagement.model.request.ApplicationEvaluationRequest; import net.gepafin.tendermanagement.model.request.ChecklistRequest; import net.gepafin.tendermanagement.model.request.CriteriaRequest; @@ -52,12 +50,12 @@ public class ApplicationEvaluationDao { @Autowired private ApplicationFormFieldRepository applicationFormFieldRepository; @Autowired - private AssignedApplicationsRepository assignedApplicationsRepository; + private AssignedApplicationsRepository assignedApplicationsRepository; @Autowired - private CriteriaFormFieldRepository criteriaFormFieldRepository; + private CriteriaFormFieldRepository criteriaFormFieldRepository; - private ApplicationEvaluationEntity convertToEntity(UserEntity user, ApplicationEvaluationRequest req,Long applicationId) { + private ApplicationEvaluationEntity convertToEntity(UserEntity user, ApplicationEvaluationRequest req, Long applicationId) { ApplicationEvaluationEntity entity = new ApplicationEvaluationEntity(); ApplicationEntity application = applicationService.validateApplication(applicationId); AssignedApplicationsEntity assignedApplications = assignedApplicationsRepository.findByApplicationIdAndIsDeletedFalse(applicationId).orElse(null); @@ -94,21 +92,32 @@ public class ApplicationEvaluationDao { private void populateBasicDetails(ApplicationEvaluationEntity entity, ApplicationEvaluationResponse response) { response.setId(entity.getId()); response.setApplicationId(entity.getApplicationId()); - AssignedApplicationsEntity assignedApplications = assignedApplicationsRepository.findByApplicationIdAndIsDeletedFalse(entity.getApplicationId()).orElse(null); - response.setAssignedApplicationId(assignedApplications.getId()); + + List assignedApplicationsList = + assignedApplicationsRepository.findAllByApplicationId(entity.getApplicationId()); + + if (assignedApplicationsList.isEmpty()) { + response.setAssignedApplicationId(null); + } else { + AssignedApplicationsEntity assignedApplications = assignedApplicationsList.get(0); + response.setAssignedApplicationId(assignedApplications.getId()); + } + response.setNote(entity.getNote()); response.setStatus(ApplicationEvaluationStatusTypeEnum.valueOf(entity.getStatus())); response.setCreatedDate(entity.getCreatedDate()); response.setUpdatedDate(entity.getUpdatedDate()); } + private void setCriteriaResponses(ApplicationEvaluationEntity entity, ApplicationEvaluationResponse response, List evaluationCriterias) { List criteriaResponsesFromEntity = entity.getCriteria() != null - ? Utils.convertJsonToList(entity.getCriteria(), new TypeReference>() {}) + ? Utils.convertJsonToList(entity.getCriteria(), new TypeReference>() { + }) : new ArrayList<>(); List criteriaResponsesFromDB = getCriteriaResponse(entity.getApplicationId()); - addMissingCriteriaResponses(criteriaResponsesFromEntity, criteriaResponsesFromDB,entity.getApplicationId()); + addMissingCriteriaResponses(criteriaResponsesFromEntity, criteriaResponsesFromDB, entity.getApplicationId()); criteriaResponsesFromEntity.forEach(criteriaResponse -> { EvaluationCriteriaEntity matchingEvaluationCriteria = evaluationCriterias.stream() .filter(evaluationCriteria -> evaluationCriteria.getId().equals(criteriaResponse.getId())) @@ -126,7 +135,8 @@ public class ApplicationEvaluationDao { response.setCriteria(criteriaResponsesFromEntity); } - private void addMissingCriteriaResponses(List criteriaResponsesFromEntity, List criteriaResponsesFromDB,Long applicationId) { + + private void addMissingCriteriaResponses(List criteriaResponsesFromEntity, List criteriaResponsesFromDB, Long applicationId) { Set existingCriteriaIds = criteriaResponsesFromEntity.stream() .map(CriteriaResponse::getId) .collect(Collectors.toSet()); @@ -139,6 +149,7 @@ public class ApplicationEvaluationDao { } } } + private List getMappedFieldsForCriteria(Long evaluationCriteriaId, Long applicationId) { List criteriaFormFields = criteriaFormFieldRepository .findByEvaluationCriteriaIdAndIsDeletedFalse(evaluationCriteriaId); @@ -190,7 +201,8 @@ public class ApplicationEvaluationDao { private void setChecklistResponses(ApplicationEvaluationEntity entity, ApplicationEvaluationResponse response, List checklistEntities) { List checklistResponsesFromEntity = entity.getChecklist() != null - ? Utils.convertJsonToList(entity.getChecklist(), new TypeReference>() {}) + ? Utils.convertJsonToList(entity.getChecklist(), new TypeReference>() { + }) : new ArrayList<>(); List checklistResponsesFromDB = getChecklistResponse(entity.getApplicationId()); @@ -224,7 +236,8 @@ public class ApplicationEvaluationDao { private void setFieldResponses(ApplicationEvaluationEntity entity, ApplicationEvaluationResponse response, List applicationFormEntities) { List fieldResponsesFromEntity = entity.getFile() != null - ? Utils.convertJsonToList(entity.getFile(), new TypeReference>() {}) + ? Utils.convertJsonToList(entity.getFile(), new TypeReference>() { + }) : new ArrayList<>(); List fieldResponsesFromDB = getFieldResponses(entity.getApplicationId()); addMissingFieldResponses(fieldResponsesFromEntity, fieldResponsesFromDB); @@ -305,46 +318,67 @@ public class ApplicationEvaluationDao { } private void setApplicationDetails(ApplicationEvaluationResponse response, ApplicationEvaluationEntity entity) { - ApplicationEntity application = applicationService.validateApplication(entity.getApplicationId() != null ? entity.getApplicationId(): null); + ApplicationEntity application = applicationService.validateApplication(entity.getApplicationId() != null ? entity.getApplicationId() : null); UserEntity user = userService.validateUser(application.getUserId()); CallEntity call = callRepository.findCallEntityByApplicationId(entity.getApplicationId()); String firstName = user.getFirstName() != null ? user.getFirstName() : ""; String lastName = user.getLastName() != null ? user.getLastName() : ""; - String beneficiary = String.join(" ", firstName, lastName).trim(); + response.setApplicationStatus(ApplicationStatusTypeEnum.valueOf(application.getStatus())); response.setBeneficiary(beneficiary); - response.setMinScore(call.getThreshold()); - response.setCallName(application.getCall().getName()); + response.setMinScore(call.getThreshold()!=null?call.getThreshold():null); + response.setCallName(application.getCall().getName()!=null?application.getCall().getName():null); response.setProtocolNumber(application.getProtocol() != null ? application.getProtocol().getProtocolNumber() : null); - response.setSubmissionDate(application.getSubmissionDate()!= null ? application.getSubmissionDate(): null); - response.setEvaluationDate(application.getSubmissionDate()!= null ? application.getSubmissionDate().plusDays(30):null); + response.setSubmissionDate(application.getSubmissionDate() != null ? application.getSubmissionDate() : null); + response.setEvaluationDate(application.getSubmissionDate() != null ? application.getSubmissionDate().plusDays(30) : null); } - public ApplicationEvaluationResponse createOrUpdateApplicationEvaluation(UserEntity user, ApplicationEvaluationRequest req,Long applicationId) { - Optional existingEntityOptional = applicationEvaluationRepository.findByApplicationIdAndIsDeletedFalse(applicationId); + public ApplicationEvaluationResponse createOrUpdateApplicationEvaluation(UserEntity user, ApplicationEvaluationRequest req, Long applicationId) { + Optional existingEntityOptional = applicationEvaluationRepository.findByAssignedApplicationsEntity_IdAndIsDeletedFalse(applicationId); ApplicationEvaluationEntity entity; if (existingEntityOptional.isPresent()) { entity = existingEntityOptional.get(); - entity.setCriteria(Utils.convertObjectToJson(processCriteria(entity, req))); - entity.setChecklist(Utils.convertObjectToJson(processChecklist(entity, req))); - entity.setFile(Utils.convertObjectToJson(processField(entity, req))); + entity.setCriteria(Utils.convertObjectToJson(filterNonNullCriteria(processCriteria(entity, req)))); + entity.setChecklist(Utils.convertObjectToJson(filterNonNullChecklist(processChecklist(entity, req)))); + entity.setFile(Utils.convertObjectToJson(filterNonNullFields(processField(entity, req)))); entity.setIsDeleted(false); setIfUpdated(entity::getNote, entity::setNote, req.getNote()); } else { - entity = convertToEntity(user, req,applicationId); + entity = convertToEntity(user, req, applicationId); } ApplicationEvaluationEntity savedEntity = applicationEvaluationRepository.save(entity); return convertToResponse(savedEntity); } + + private List filterNonNullChecklist(List checklistRequests) { + return checklistRequests.stream() + .filter(request -> request.getValid() != null) + .collect(Collectors.toList()); + } + + private List filterNonNullCriteria(List criteriaRequests) { + return criteriaRequests.stream() + .filter(request -> request.getScore() != null && request.getValid() != null) + .collect(Collectors.toList()); + } + + private List filterNonNullFields(List fieldRequests) { + return fieldRequests.stream() + .filter(request -> request.getValid() != null) + .collect(Collectors.toList()); + } + private List processCriteria(ApplicationEvaluationEntity entity, ApplicationEvaluationRequest req) { - List existingCriteriaList = entity.getCriteria() != null ? - Utils.convertJsonToList(entity.getCriteria(), new TypeReference>() {}) : new ArrayList<>(); + List existingCriteriaList = entity.getCriteria() != null + ? Utils.convertJsonToList(entity.getCriteria(), new TypeReference>() { + }) + : new ArrayList<>(); Map existingCriteriaMap = existingCriteriaList.stream() .collect(Collectors.toMap(CriteriaResponse::getId, criteria -> criteria)); @@ -358,8 +392,8 @@ public class ApplicationEvaluationDao { CriteriaResponse existingCriteria = existingCriteriaMap.get(incoming.getId()); if (existingCriteria != null) { - request.setScore(incoming.getScore() != null ? incoming.getScore() : existingCriteria.getScore()); - request.setValid(incoming.getValid() != null ? incoming.getValid() : existingCriteria.getValid()); + request.setScore(incoming.getScore() != null ? incoming.getScore() : null); + request.setValid(incoming.getValid() != null ? incoming.getValid() : null); } return request; }) @@ -384,8 +418,10 @@ public class ApplicationEvaluationDao { } private List processChecklist(ApplicationEvaluationEntity entity, ApplicationEvaluationRequest req) { - List existingChecklistList = entity.getChecklist() != null ? - Utils.convertJsonToList(entity.getChecklist(), new TypeReference>() {}) : new ArrayList<>(); + List existingChecklistList = entity.getChecklist() != null + ? Utils.convertJsonToList(entity.getChecklist(), new TypeReference>() { + }) + : new ArrayList<>(); Map existingChecklistMap = existingChecklistList.stream() .collect(Collectors.toMap(ChecklistResponse::getId, checklist -> checklist)); @@ -397,8 +433,8 @@ public class ApplicationEvaluationDao { request.setValid(incoming.getValid()); ChecklistResponse existingChecklist = existingChecklistMap.get(incoming.getId()); - if (existingChecklist != null) { - request.setValid(incoming.getValid() != null ? incoming.getValid() : existingChecklist.getValid()); + if (existingChecklist != null && incoming.getValid() == null) { + request.setValid(null); } return request; }) @@ -412,7 +448,7 @@ public class ApplicationEvaluationDao { .map(existing -> { ChecklistRequest request = new ChecklistRequest(); request.setId(existing.getId()); - request.setValid(existing.getValid()); + request.setValid(existing.getValid() != null ? existing.getValid() : null); return request; }) .toList(); @@ -422,8 +458,10 @@ public class ApplicationEvaluationDao { } private List processField(ApplicationEvaluationEntity entity, ApplicationEvaluationRequest req) { - List existingFieldList = entity.getFile() != null ? - Utils.convertJsonToList(entity.getFile(), new TypeReference>() {}) : new ArrayList<>(); + List existingFieldList = entity.getFile() != null + ? Utils.convertJsonToList(entity.getFile(), new TypeReference>() { + }) + : new ArrayList<>(); Map existingFieldMap = existingFieldList.stream() .collect(Collectors.toMap(FieldResponse::getId, field -> field)); @@ -436,7 +474,7 @@ public class ApplicationEvaluationDao { FieldResponse existingField = existingFieldMap.get(incoming.getId()); if (existingField != null) { - request.setValid(incoming.getValid() != null ? incoming.getValid() : existingField.getValid()); + request.setValid(incoming.getValid() != null ? incoming.getValid() : null); } return request; }) @@ -460,7 +498,7 @@ public class ApplicationEvaluationDao { } private ApplicationEvaluationEntity validateApplicationEvaluation(Long id) { - Optional entityOptional = applicationEvaluationRepository.findById(id); + Optional entityOptional = applicationEvaluationRepository.findByIdAndIsDeletedFalse(id); if (entityOptional.isEmpty()) { throw new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.APPLICATION_EVALUATION_NOT_FOUND, id)); @@ -469,51 +507,52 @@ public class ApplicationEvaluationDao { } - public ApplicationEvaluationResponse getApplicationEvaluationByApplicationId(UserEntity user, Long applicationId, Long assignedApplicationId) { - - applicationService.validateApplication(applicationId); - - Optional entityOptional; - - if (applicationId != null && assignedApplicationId != null) { - entityOptional = applicationEvaluationRepository.findByApplicationIdAndAssignedApplicationsEntity_IdAndIsDeletedFalse(applicationId, assignedApplicationId); - } else if (applicationId != null) { - entityOptional = applicationEvaluationRepository.findByApplicationIdAndIsDeletedFalse(applicationId); - } else if (assignedApplicationId != null) { - entityOptional = applicationEvaluationRepository.findByAssignedApplicationsEntity_IdAndIsDeletedFalse(assignedApplicationId); - } else { - entityOptional = applicationEvaluationRepository.findFirstByIsDeletedFalseOrderByCreatedDateDesc(); + public List getApplicationEvaluationByApplicationId(UserEntity user, Long applicationId, Long assignedApplicationId) { + if (applicationId != null && assignedApplicationId == null) { + applicationService.validateApplication(applicationId); + List evaluationEntities = applicationEvaluationRepository.findByApplicationIdAndIsDeletedFalse(applicationId); + return evaluationEntities.stream() + .map(this::convertToResponse) + .collect(Collectors.toList()); } - return entityOptional.map(this::convertToResponse) - .orElseGet(() -> { - return getEvaluationResponseByApplicationid(user, applicationId, assignedApplicationId); - }); + + Optional entityOptional = + (applicationId != null && assignedApplicationId != null) + ? applicationEvaluationRepository.findByApplicationIdAndAssignedApplicationsEntity_IdAndIsDeletedFalse(applicationId, assignedApplicationId) + : applicationEvaluationRepository.findByAssignedApplicationsEntity_IdAndIsDeletedFalse(assignedApplicationId); + + return entityOptional + .map(entity -> Collections.singletonList(convertToResponse(entity))) + .orElseGet(() -> Collections.singletonList(getEvaluationResponseByApplicationid(user, applicationId, assignedApplicationId))); } - public ApplicationEvaluationResponse getEvaluationResponseByApplicationid(UserEntity user, Long applicationId,Long assignedApplicationId) { + + public ApplicationEvaluationResponse getEvaluationResponseByApplicationid(UserEntity user, Long applicationId, Long assignedApplicationId) { ApplicationEvaluationEntity entity = new ApplicationEvaluationEntity(); ApplicationEvaluationResponse response = new ApplicationEvaluationResponse(); - CallEntity call=null; - AssignedApplicationsEntity assignedApplications=null; + ApplicationEntity application = applicationService.validateApplication(applicationId); + CallEntity call = null; + AssignedApplicationsEntity assignedApplications = null; if (applicationId != null) { call = callRepository.findCallEntityByApplicationId(applicationId); assignedApplications = assignedApplicationsRepository.findByApplicationIdAndIsDeletedFalse(applicationId).orElse(null); } else if (assignedApplicationId != null) { call = callRepository.findCallEntityByApplicationId(assignedApplicationId); - assignedApplications = assignedApplicationsRepository.findByIdAndIsDeletedFalse(assignedApplicationId).orElseThrow(()-> - new ResourceNotFoundException(Status.NOT_FOUND,Translator.toLocale(GepafinConstant.ASSIGNED_APPLICATION_NOT_FOUND_MSG))); - } - else { + assignedApplications = assignedApplicationsRepository.findByIdAndIsDeletedFalse(assignedApplicationId).orElseThrow(() -> + new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.ASSIGNED_APPLICATION_NOT_FOUND_MSG))); + } else { call = callRepository.findCallEntityByApplicationId(applicationId); - assignedApplications = assignedApplicationsRepository.findByApplicationIdAndIsDeletedFalse(applicationId).orElse(null);} + assignedApplications = assignedApplicationsRepository.findByApplicationIdAndIsDeletedFalse(applicationId).orElse(null); + } List evaluationCriterias = evaluationCriteriaRepository.findByCallId(call.getId()); List checklistEntities = callTargetAudienceChecklistRepository.findByCallId(call.getId()); List applicationFormEntities = applicationFormRepository.findByApplicationId(applicationId); response.setApplicationId(applicationId); response.setAssignedApplicationId(assignedApplications.getId()); response.setNote(null); + response.setApplicationStatus(ApplicationStatusTypeEnum.valueOf(application.getStatus())); response.setStatus(ApplicationEvaluationStatusTypeEnum.valueOf(ApplicationEvaluationStatusTypeEnum.OPEN.getValue())); - response.setMinScore(call.getThreshold()); + response.setMinScore(call.getThreshold()!=null?call.getThreshold():null); setCriteriaResponses(entity, applicationId, response, evaluationCriterias); setChecklistResponses(entity, applicationId, response, checklistEntities); setFileResponses(entity, applicationId, response, applicationFormEntities); @@ -525,7 +564,8 @@ public class ApplicationEvaluationDao { private void setCriteriaResponses(ApplicationEvaluationEntity entity, Long applicationId, ApplicationEvaluationResponse response, List evaluationCriterias) { List criteriaResponses = entity.getCriteria() != null - ? Utils.convertJsonToList(entity.getCriteria(), new TypeReference>() {}) + ? Utils.convertJsonToList(entity.getCriteria(), new TypeReference>() { + }) : getCriteriaResponse(applicationId); criteriaResponses.forEach(criteriaResponse -> { @@ -587,7 +627,8 @@ public class ApplicationEvaluationDao { private void setChecklistResponses(ApplicationEvaluationEntity entity, Long applicationId, ApplicationEvaluationResponse response, List checklistEntities) { List checklistResponses = entity.getChecklist() != null - ? Utils.convertJsonToList(entity.getChecklist(), new TypeReference>() {}) + ? Utils.convertJsonToList(entity.getChecklist(), new TypeReference>() { + }) : getChecklistResponse(applicationId); checklistResponses.forEach(checklistResponse -> { @@ -603,9 +644,11 @@ public class ApplicationEvaluationDao { response.setChecklist(checklistResponses); } + private void setFileResponses(ApplicationEvaluationEntity entity, Long applicationId, ApplicationEvaluationResponse response, List applicationFormEntities) { List fieldResponses = entity.getFile() != null - ? Utils.convertJsonToList(entity.getFile(), new TypeReference>() {}) + ? Utils.convertJsonToList(entity.getFile(), new TypeReference>() { + }) : getFieldResponses(applicationId); Set processedFieldIds = new HashSet<>(); @@ -678,10 +721,10 @@ public class ApplicationEvaluationDao { String beneficiary = String.join(" ", firstName, lastName).trim(); response.setBeneficiary(beneficiary); - response.setCallName(application.getCall().getName()); + response.setCallName(application.getCall().getName()!=null?application.getCall().getName():null); response.setProtocolNumber(application.getProtocol() != null ? application.getProtocol().getProtocolNumber() : null); - response.setSubmissionDate(application.getSubmissionDate()!= null ? application.getSubmissionDate(): null); - response.setEvaluationDate(application.getSubmissionDate()!= null ? application.getSubmissionDate().plusDays(30):null); + response.setSubmissionDate(application.getSubmissionDate() != null ? application.getSubmissionDate() : null); + response.setEvaluationDate(application.getSubmissionDate() != null ? application.getSubmissionDate().plusDays(30) : null); } @@ -751,7 +794,8 @@ public class ApplicationEvaluationDao { return criteriaResponses; } - List getChecklistResponse(Long applicationId){ CallEntity call = callRepository.findCallEntityByApplicationId(applicationId); + List getChecklistResponse(Long applicationId) { + CallEntity call = callRepository.findCallEntityByApplicationId(applicationId); List checklistEntities = callTargetAudienceChecklistRepository.findByCallId(call.getId()); List checklistResponses = checklistEntities.stream().map(checklist -> { ChecklistResponse response = new ChecklistResponse(); @@ -764,6 +808,7 @@ public class ApplicationEvaluationDao { return checklistResponses; } + public List getFieldResponses(Long applicationId) { List applicationFormEntities = applicationFormRepository.findByApplicationId(applicationId); List fieldResponses = new ArrayList<>(); @@ -832,21 +877,34 @@ public class ApplicationEvaluationDao { } public void deleteById(Long id) { - ApplicationEvaluationEntity applicationEvaluationEntity= validateApplicationEvaluation(id); + ApplicationEvaluationEntity applicationEvaluationEntity = validateApplicationEvaluation(id); applicationEvaluationEntity.setIsDeleted(true); - applicationEvaluationEntity=saveApplicationEvaluationEntity(applicationEvaluationEntity); + applicationEvaluationEntity = saveApplicationEvaluationEntity(applicationEvaluationEntity); } - public ApplicationEvaluationEntity saveApplicationEvaluationEntity(ApplicationEvaluationEntity applicationEvaluationEntityData){ + + public ApplicationEvaluationEntity saveApplicationEvaluationEntity(ApplicationEvaluationEntity applicationEvaluationEntityData) { return applicationEvaluationRepository.save(applicationEvaluationEntityData); } - public ApplicationEvaluationResponse updateApplicationEvaluationStatus(Long applicationId, ApplicationEvaluationStatusTypeEnum status) { - ApplicationEvaluationEntity existingEntity = validateApplicationEvaluation(applicationId); - if (status != null && !status.getValue().equals(existingEntity.getStatus())) { - existingEntity.setStatus(status.getValue()); - } - ApplicationEvaluationEntity updatedEntity = applicationEvaluationRepository.save(existingEntity); - return convertToResponse(updatedEntity); - } + public ApplicationEvaluationResponse updateApplicationEvaluationStatus(ApplicationEntity application, AssignedApplicationsEntity assignedApplicationsEntity) { + Optional existingEntityOptional = applicationEvaluationRepository.findByAssignedApplicationsEntity_IdAndIsDeletedFalse(assignedApplicationsEntity.getId()); + ApplicationEvaluationEntity entity = null; + if (existingEntityOptional.isPresent()) { + ApplicationEvaluationEntity existingEntity = existingEntityOptional.get(); + if (Boolean.TRUE.equals( + application.getStatus().equals(ApplicationStatusTypeEnum.APPROVED.getValue()) || + application.getStatus().equals(ApplicationStatusTypeEnum.REJECTED.getValue()) + )) { + existingEntity.setStatus(ApplicationEvaluationStatusTypeEnum.CLOSE.getValue()); + assignedApplicationsEntity.setStatus(AssignedApplicationEnum.CLOSE.getValue()); + } entity = applicationEvaluationRepository.save(existingEntity); + assignedApplicationsEntity=assignedApplicationsRepository.save(assignedApplicationsEntity);} + + return convertToResponse(entity); + + + + } } + diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/ApplicationEvaluationResponse.java b/src/main/java/net/gepafin/tendermanagement/model/response/ApplicationEvaluationResponse.java index 5e4269eb..08425f4c 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/response/ApplicationEvaluationResponse.java +++ b/src/main/java/net/gepafin/tendermanagement/model/response/ApplicationEvaluationResponse.java @@ -2,6 +2,7 @@ package net.gepafin.tendermanagement.model.response; import lombok.Data; import net.gepafin.tendermanagement.enums.ApplicationEvaluationStatusTypeEnum; +import net.gepafin.tendermanagement.enums.ApplicationStatusTypeEnum; import java.time.LocalDateTime; import java.util.List; @@ -12,6 +13,7 @@ public class ApplicationEvaluationResponse { private Long id; private Long applicationId; + private ApplicationStatusTypeEnum applicationStatus; private Long assignedApplicationId; private String note; private ApplicationEvaluationStatusTypeEnum status; diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationEvaluationRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationEvaluationRepository.java index 81b9a3ea..69aa74fe 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationEvaluationRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationEvaluationRepository.java @@ -6,13 +6,14 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; +import java.util.List; import java.util.Optional; @Repository public interface ApplicationEvaluationRepository extends JpaRepository { - Optional findByApplicationIdAndIsDeletedFalse(Long applicationId); - + List findByApplicationIdAndIsDeletedFalse(Long applicationId); + Optional findByIdAndIsDeletedFalse(Long id); Optional findByAssignedApplicationsEntity_IdAndIsDeletedFalse(Long assignedApplicationId); Optional findByApplicationIdAndAssignedApplicationsEntity_IdAndIsDeletedFalse(Long applicationId, Long assignedApplicationId); diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/AssignedApplicationsRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/AssignedApplicationsRepository.java index 6b95b8f8..a2ceec9e 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/AssignedApplicationsRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/AssignedApplicationsRepository.java @@ -5,17 +5,23 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; + +import java.util.List; import java.util.Optional; @Repository public interface AssignedApplicationsRepository extends JpaRepository, JpaSpecificationExecutor{ Optional findByApplicationIdAndIsDeletedFalse(Long applicationId); Optional findByIdAndIsDeletedFalse(Long id); - @Query("SELECT aa FROM AssignedApplicationsEntity aa WHERE aa.isDeleted = false " + - "AND (:applicationId IS NULL OR aa.application.id = :applicationId) " + - "AND (:id IS NULL OR aa.id = :id)") - Optional findByApplicationIdOrId(@Param("applicationId") Long applicationId, - @Param("id") Long id); + @Query("SELECT aa FROM AssignedApplicationsEntity aa WHERE aa.isDeleted = false AND aa.application.id = :applicationId") + List findAllByApplicationId(@Param("applicationId") Long applicationId); + + @Query("SELECT aa FROM AssignedApplicationsEntity aa WHERE aa.isDeleted = false AND aa.application.id = :applicationId AND aa.id = :assignedApplicationId") + Optional findByApplicationIdAndAssignedApplicationId( + @Param("applicationId") Long applicationId, + @Param("assignedApplicationId") Long assignedApplicationId); + @Query("SELECT aa FROM AssignedApplicationsEntity aa WHERE aa.isDeleted = false AND aa.id = :assignedApplicationId") + Optional findByAssignedApplicationId(@Param("assignedApplicationId") Long assignedApplicationId); } diff --git a/src/main/java/net/gepafin/tendermanagement/service/ApplicationEvaluationService.java b/src/main/java/net/gepafin/tendermanagement/service/ApplicationEvaluationService.java index 8ad33689..c07302f7 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/ApplicationEvaluationService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/ApplicationEvaluationService.java @@ -14,8 +14,8 @@ public interface ApplicationEvaluationService { ApplicationEvaluationResponse createOrUpdateApplicationEvaluation(HttpServletRequest request, ApplicationEvaluationRequest applicationEvaluationRequest,Long assignedApplicationsId); void deleteApplicationEvaluation(HttpServletRequest request,Long id); - ApplicationEvaluationResponse getApplicationEvaluationByApplicationId(HttpServletRequest request,Long applicationId,Long assignedApplicationId); - ApplicationEvaluationResponse updateApplicationEvaluationStatus(HttpServletRequest request, Long applicationEvaluationId, ApplicationEvaluationStatusTypeEnum status); + List getApplicationEvaluationByApplicationId(HttpServletRequest request,Long applicationId,Long assignedApplicationId); + ApplicationEvaluationResponse updateApplicationEvaluationStatus(HttpServletRequest request, Long assignedApplicationId); } diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationEvaluationServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationEvaluationServiceImpl.java index 262f4a83..d7ab71a2 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationEvaluationServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationEvaluationServiceImpl.java @@ -23,6 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Collections; import java.util.List; import java.util.Optional; @@ -42,30 +43,61 @@ public class ApplicationEvaluationServiceImpl implements ApplicationEvaluationSe AssignedApplicationsEntity assignedApplication = assignedApplicationsRepository.findByIdAndIsDeletedFalse(assignedApplicationsId).orElseThrow(()-> new ResourceNotFoundException(Status.NOT_FOUND,Translator.toLocale(GepafinConstant.ASSIGNED_APPLICATION_NOT_FOUND_MSG))); UserEntity user=validator.validatePreInstructor(request,assignedApplication.getUserId()); - return applicationEvaluationDao.createOrUpdateApplicationEvaluation(user,req,assignedApplication.getApplication().getId()); + return applicationEvaluationDao.createOrUpdateApplicationEvaluation(user,req,assignedApplication.getId()); } @Override @Transactional(readOnly = true) - public ApplicationEvaluationResponse getApplicationEvaluationByApplicationId( + public List getApplicationEvaluationByApplicationId( HttpServletRequest request, Long applicationId, Long assignedApplicationId) { + if (applicationId == null && assignedApplicationId == null) { + throw new CustomValidationException( + Status.BAD_REQUEST, + Translator.toLocale(GepafinConstant.EITHER_APPLICATION_OR_ASSIGNED_APPLICATION_ID_REQUIRED_MSG) + ); + } + AssignedApplicationsEntity assignedApplications; - Optional assignedApplicationsOptional = - assignedApplicationsRepository.findByApplicationIdOrId(applicationId, assignedApplicationId); + if (applicationId != null && assignedApplicationId != null) { + assignedApplications = assignedApplicationsRepository + .findByApplicationIdAndAssignedApplicationId(applicationId, assignedApplicationId) + .orElseThrow(() -> new CustomValidationException( + Status.BAD_REQUEST, + Translator.toLocale(GepafinConstant.ASSIGNED_APPLICATION_NOT_FOUND_WITH_ID_MSG) + )); + } else if (assignedApplicationId != null) { + assignedApplications = assignedApplicationsRepository + .findByAssignedApplicationId(assignedApplicationId) + .orElseThrow(() -> new CustomValidationException( + Status.BAD_REQUEST, + Translator.toLocale(GepafinConstant.ASSIGNED_APPLICATION_NOT_FOUND_WITH_ID_MSG) + )); + } else { + List assignedApplicationsList = assignedApplicationsRepository + .findAllByApplicationId(applicationId); - AssignedApplicationsEntity assignedApplications = assignedApplicationsOptional - .orElseThrow(() -> new CustomValidationException( + if (assignedApplicationsList.isEmpty()) { + throw new CustomValidationException( Status.BAD_REQUEST, Translator.toLocale(GepafinConstant.ASSIGNED_APPLICATION_NOT_FOUND_WITH_ID_MSG) - )); + ); + } + + assignedApplications = assignedApplicationsList.get(0); + } + UserEntity user = validator.validatePreInstructor(request, assignedApplications.getUserId()); - return applicationEvaluationDao.getApplicationEvaluationByApplicationId( - user, - assignedApplications.getApplication().getId(), - assignedApplications.getId() - ); + if (applicationId != null && assignedApplicationId == null) { + return applicationEvaluationDao.getApplicationEvaluationByApplicationId(user, assignedApplications.getApplication().getId(), null); + } + + if (applicationId != null && assignedApplicationId != null) { + return applicationEvaluationDao.getApplicationEvaluationByApplicationId(user, assignedApplications.getApplication().getId(), assignedApplications.getId()); + } + return applicationEvaluationDao.getApplicationEvaluationByApplicationId(user, null, assignedApplications.getId()); } + @Override @Transactional(rollbackFor = Exception.class) public void deleteApplicationEvaluation(HttpServletRequest request,Long id) { @@ -75,13 +107,11 @@ public class ApplicationEvaluationServiceImpl implements ApplicationEvaluationSe @Override @Transactional(rollbackFor = Exception.class) - public ApplicationEvaluationResponse updateApplicationEvaluationStatus(HttpServletRequest request, Long applicationId, ApplicationEvaluationStatusTypeEnum status) { - AssignedApplicationsEntity assignedApplications = assignedApplicationsRepository.findByApplicationIdAndIsDeletedFalse(applicationId).orElse(null); - if(assignedApplications==null){ - throw new CustomValidationException(Status.BAD_REQUEST, Translator.toLocale(GepafinConstant.ASSIGNED_APPLICATION_NOT_FOUND_WITH_ID_MSG)); - } - validator.validatePreInstructor(request, assignedApplications.getUserId()); - return applicationEvaluationDao.updateApplicationEvaluationStatus(applicationId, status); + public ApplicationEvaluationResponse updateApplicationEvaluationStatus(HttpServletRequest request, Long assignedApplicationId) { + AssignedApplicationsEntity assignedApplication = assignedApplicationsRepository.findByIdAndIsDeletedFalse(assignedApplicationId).orElseThrow(()-> + new ResourceNotFoundException(Status.NOT_FOUND,Translator.toLocale(GepafinConstant.ASSIGNED_APPLICATION_NOT_FOUND_MSG))); + validator.validatePreInstructor(request,assignedApplication.getUserId()); + return applicationEvaluationDao.updateApplicationEvaluationStatus(assignedApplication.getApplication(),assignedApplication); } } diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/ApplicationEvaluationApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/ApplicationEvaluationApi.java index 800f443f..aca53c6f 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/ApplicationEvaluationApi.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/ApplicationEvaluationApi.java @@ -38,18 +38,20 @@ public interface ApplicationEvaluationApi { @Parameter(required = true) @PathVariable("assignedApplicationsId") Long assignedApplicationsId, @Parameter( required = true) @Valid @RequestBody ApplicationEvaluationRequest evaluationRequest); - @Operation(summary = "API to get ApplicationEvaluation data for evaluation process", + @Operation( + summary = "API to get ApplicationEvaluation data for evaluation process", responses = { @ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { - @ExampleObject(value = ErrorConstants.NOTFOUND_ERROR_EXAMPLE) })) + @ExampleObject(value = ErrorConstants.NOTFOUND_ERROR_EXAMPLE) })), + @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { + @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) }) @GetMapping(value = "/application", produces = MediaType.APPLICATION_JSON_VALUE) - ResponseEntity> getApplicationEvaluationByApplicationId( + ResponseEntity>> getApplicationEvaluationByApplicationId( HttpServletRequest request, - @Parameter(description = "Application ID", required = false) @RequestParam(value = "applicationId", required = false) Long applicationId, - @Parameter(description = "Assigned Application ID", required = false) @RequestParam(value = "assignedApplicationId", required = false) Long assignedApplicationId); - + @Parameter(required = false) @RequestParam(value = "applicationId", required = false) Long applicationId, + @Parameter(required = false) @RequestParam(value = "assignedApplicationId", required = false) Long assignedApplicationId); @Operation(summary = "API to delete ApplicationEvaluation", responses = { @@ -59,7 +61,7 @@ public interface ApplicationEvaluationApi { }) @DeleteMapping(value = "/{id}") ResponseEntity> deleteApplicationEvaluation(HttpServletRequest request, - @Parameter(description = "The evaluation ID", required = true) @PathVariable("id") Long id); + @Parameter( required = true) @PathVariable("id") Long id); @Operation(summary = "Api to update application evaluation status", responses = { @@ -70,9 +72,8 @@ public interface ApplicationEvaluationApi { @ExampleObject(value = ErrorConstants.UNAUTHORIZED_ERROR_EXAMPLE) })), @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) }) - @PutMapping(value = "/{applicationId}/status", produces = MediaType.APPLICATION_JSON_VALUE) + @PutMapping(value = "/{assignedApplicationId}/status", produces = MediaType.APPLICATION_JSON_VALUE) ResponseEntity> updateApplicationEvaluationStatus(HttpServletRequest request, - @Parameter( required = true) @PathVariable("applicationId") Long applicationId, - @Parameter(description = "status", required = true)@RequestParam(value = "status", required = true) ApplicationEvaluationStatusTypeEnum status); + @Parameter( required = true) @PathVariable("assignedApplicationId") Long assignedApplicationId); } diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/ApplicationEvaluationApiController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/ApplicationEvaluationApiController.java index b523a3ec..b41a65ed 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/ApplicationEvaluationApiController.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/ApplicationEvaluationApiController.java @@ -37,15 +37,17 @@ public class ApplicationEvaluationApiController implements ApplicationEvaluation } @Override - public ResponseEntity> getApplicationEvaluationByApplicationId( + public ResponseEntity>> getApplicationEvaluationByApplicationId( HttpServletRequest request, Long applicationId, Long assignedApplicationId) { - ApplicationEvaluationResponse response = null; - response = applicationEvaluationService.getApplicationEvaluationByApplicationId(request, applicationId,assignedApplicationId); + List responseList = + applicationEvaluationService.getApplicationEvaluationByApplicationId(request, applicationId, assignedApplicationId); + return ResponseEntity.status(HttpStatus.OK) - .body(new Response<>(response, Status.SUCCESS, Translator.toLocale(GepafinConstant.EVALUATION_FETCHED_SUCCESSFULLY))); + .body(new Response<>(responseList, Status.SUCCESS, Translator.toLocale(GepafinConstant.EVALUATION_FETCHED_SUCCESSFULLY))); } + @Override public ResponseEntity> deleteApplicationEvaluation(HttpServletRequest request, Long id) { @@ -55,9 +57,8 @@ public class ApplicationEvaluationApiController implements ApplicationEvaluation } @Override - public ResponseEntity> updateApplicationEvaluationStatus(HttpServletRequest request, Long applicationId, - ApplicationEvaluationStatusTypeEnum status) { - ApplicationEvaluationResponse applicationEvaluationResponse = applicationEvaluationService.updateApplicationEvaluationStatus(request, applicationId, status); + public ResponseEntity> updateApplicationEvaluationStatus(HttpServletRequest request, Long assignedApplicationId) { + ApplicationEvaluationResponse applicationEvaluationResponse = applicationEvaluationService.updateApplicationEvaluationStatus(request, assignedApplicationId); return ResponseEntity.status(HttpStatus.OK) .body(new Response<>(applicationEvaluationResponse, Status.SUCCESS, Translator.toLocale(GepafinConstant.APPLICATION_EVALUATION_STATUS_UPDATED_SUCCESSFULLY))); } diff --git a/src/main/resources/message_en.properties b/src/main/resources/message_en.properties index 5d446db2..63273a75 100644 --- a/src/main/resources/message_en.properties +++ b/src/main/resources/message_en.properties @@ -262,7 +262,7 @@ evaluations.fetched.successfully = All application evaluations fetched successfu application.evaluation.status.updated.successfully=Application evaluation status updated successfully. evaluationCriteria.invalid=This evaluation criterion does not belong to the current call. assigned.application.not.found.with.id=Assigned application with this application ID not found - +either.application.or.assigned.application.id.required=Either applicationId or assignedApplicationId is required. # Hub Messages hub_create_success=Hub created successfully diff --git a/src/main/resources/message_it.properties b/src/main/resources/message_it.properties index fc74a527..2e77d058 100644 --- a/src/main/resources/message_it.properties +++ b/src/main/resources/message_it.properties @@ -260,6 +260,7 @@ evaluation.deleted.successfully = Valutazione dell'applicazione eliminata con su evaluations.fetched.successfully = Tutte le valutazioni delle applicazioni recuperate con successo. application.evaluation.status.updated.successfully=Stato della valutazione dell'applicazione aggiornato con successo. assigned.application.not.found.with.id=Applicazione assegnata con questo ID dell'applicazione non trovata +either.application.or.assigned.application.id.required=È richiesto almeno uno tra applicationId o assignedApplicationId. application.assigned.success.msg =Domanda assegnata con successo application.already.assigned.msg =La domanda � gi� assegnata From 586e000d142af3e2e418f3f3b0a69ae38764694f Mon Sep 17 00:00:00 2001 From: harish Date: Mon, 28 Oct 2024 13:37:28 +0530 Subject: [PATCH 2/2] Updated code --- .../dao/ApplicationEvaluationDao.java | 36 ++++++++++--------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java index 99068a63..681385bc 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java @@ -55,10 +55,11 @@ public class ApplicationEvaluationDao { private CriteriaFormFieldRepository criteriaFormFieldRepository; - private ApplicationEvaluationEntity convertToEntity(UserEntity user, ApplicationEvaluationRequest req, Long applicationId) { + private ApplicationEvaluationEntity convertToEntity(UserEntity user, ApplicationEvaluationRequest req, Long assignedApplciationId) { ApplicationEvaluationEntity entity = new ApplicationEvaluationEntity(); - ApplicationEntity application = applicationService.validateApplication(applicationId); - AssignedApplicationsEntity assignedApplications = assignedApplicationsRepository.findByApplicationIdAndIsDeletedFalse(applicationId).orElse(null); + + AssignedApplicationsEntity assignedApplications = assignedApplicationsRepository.findByIdAndIsDeletedFalse(assignedApplciationId).orElse(null); + ApplicationEntity application = applicationService.validateApplication(assignedApplications.getApplication().getId()); entity.setApplicationId(application.getId()); entity.setAssignedApplicationsEntity(assignedApplications); entity.setUserId(user.getId()); @@ -337,8 +338,8 @@ public class ApplicationEvaluationDao { } - public ApplicationEvaluationResponse createOrUpdateApplicationEvaluation(UserEntity user, ApplicationEvaluationRequest req, Long applicationId) { - Optional existingEntityOptional = applicationEvaluationRepository.findByAssignedApplicationsEntity_IdAndIsDeletedFalse(applicationId); + public ApplicationEvaluationResponse createOrUpdateApplicationEvaluation(UserEntity user, ApplicationEvaluationRequest req, Long assignedApplciationId) { + Optional existingEntityOptional = applicationEvaluationRepository.findByAssignedApplicationsEntity_IdAndIsDeletedFalse(assignedApplciationId); ApplicationEvaluationEntity entity; if (existingEntityOptional.isPresent()) { @@ -349,7 +350,7 @@ public class ApplicationEvaluationDao { entity.setIsDeleted(false); setIfUpdated(entity::getNote, entity::setNote, req.getNote()); } else { - entity = convertToEntity(user, req, applicationId); + entity = convertToEntity(user, req, assignedApplciationId); } ApplicationEvaluationEntity savedEntity = applicationEvaluationRepository.save(entity); @@ -530,16 +531,19 @@ public class ApplicationEvaluationDao { public ApplicationEvaluationResponse getEvaluationResponseByApplicationid(UserEntity user, Long applicationId, Long assignedApplicationId) { ApplicationEvaluationEntity entity = new ApplicationEvaluationEntity(); ApplicationEvaluationResponse response = new ApplicationEvaluationResponse(); - ApplicationEntity application = applicationService.validateApplication(applicationId); CallEntity call = null; + ApplicationEntity application=null; AssignedApplicationsEntity assignedApplications = null; - if (applicationId != null) { + if (applicationId != null && assignedApplicationId==null) { + application = applicationService.validateApplication(applicationId); call = callRepository.findCallEntityByApplicationId(applicationId); assignedApplications = assignedApplicationsRepository.findByApplicationIdAndIsDeletedFalse(applicationId).orElse(null); } else if (assignedApplicationId != null) { - call = callRepository.findCallEntityByApplicationId(assignedApplicationId); assignedApplications = assignedApplicationsRepository.findByIdAndIsDeletedFalse(assignedApplicationId).orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.ASSIGNED_APPLICATION_NOT_FOUND_MSG))); + application = applicationService.validateApplication(assignedApplications.getApplication().getId()); + call = callRepository.findCallEntityByApplicationId(application.getId()); + } else { call = callRepository.findCallEntityByApplicationId(applicationId); assignedApplications = assignedApplicationsRepository.findByApplicationIdAndIsDeletedFalse(applicationId).orElse(null); @@ -547,17 +551,17 @@ public class ApplicationEvaluationDao { List evaluationCriterias = evaluationCriteriaRepository.findByCallId(call.getId()); List checklistEntities = callTargetAudienceChecklistRepository.findByCallId(call.getId()); List applicationFormEntities = applicationFormRepository.findByApplicationId(applicationId); - response.setApplicationId(applicationId); + response.setApplicationId(application.getId()); response.setAssignedApplicationId(assignedApplications.getId()); response.setNote(null); response.setApplicationStatus(ApplicationStatusTypeEnum.valueOf(application.getStatus())); response.setStatus(ApplicationEvaluationStatusTypeEnum.valueOf(ApplicationEvaluationStatusTypeEnum.OPEN.getValue())); response.setMinScore(call.getThreshold()!=null?call.getThreshold():null); - setCriteriaResponses(entity, applicationId, response, evaluationCriterias); - setChecklistResponses(entity, applicationId, response, checklistEntities); - setFileResponses(entity, applicationId, response, applicationFormEntities); + setCriteriaResponses(entity, application.getId(), response, evaluationCriterias); + setChecklistResponses(entity, application.getId(), response, checklistEntities); + setFileResponses(entity, application.getId(), response, applicationFormEntities); - setApplicationDetails(response, applicationId, user); + setApplicationDetails(response, application.getId(), user); return response; } @@ -899,9 +903,9 @@ public class ApplicationEvaluationDao { existingEntity.setStatus(ApplicationEvaluationStatusTypeEnum.CLOSE.getValue()); assignedApplicationsEntity.setStatus(AssignedApplicationEnum.CLOSE.getValue()); } entity = applicationEvaluationRepository.save(existingEntity); - assignedApplicationsEntity=assignedApplicationsRepository.save(assignedApplicationsEntity);} + assignedApplicationsEntity=assignedApplicationsRepository.save(assignedApplicationsEntity); - return convertToResponse(entity); + return convertToResponse(entity);}return null;