diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java index c1a47b63..e4ddac90 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java @@ -20,6 +20,7 @@ import net.gepafin.tendermanagement.web.rest.api.errors.Status; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; @@ -94,7 +95,7 @@ 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); + AssignedApplicationsEntity assignedApplications = assignedApplicationsRepository.findByIdAndIsDeletedFalse(entity.getAssignedApplicationsEntity().getId()).orElse(null); response.setAssignedApplicationId(assignedApplications.getId()); response.setNote(entity.getNote()); response.setStatus(ApplicationEvaluationStatusTypeEnum.valueOf(entity.getStatus())); @@ -327,7 +328,8 @@ public class ApplicationEvaluationDao { 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); - + LocalDateTime callEndDate = application.getCall().getEndDate(); + response.setCallEndDate(callEndDate); } @@ -335,13 +337,6 @@ public class ApplicationEvaluationDao { Optional existingEntityOptional = applicationEvaluationRepository.findByAssignedApplicationsEntity_IdAndIsDeletedFalse(assignedApplciationId); ApplicationEvaluationEntity entity; Optional assignedApplications=assignedApplicationsRepository.findByIdAndIsDeletedFalse(assignedApplciationId); - {if(assignedApplications.isPresent()) - if (applicationEvaluationRepository.existsByApplicationIdAndIsDeletedFalse(assignedApplications.get().getApplication().getId())) { - throw new CustomValidationException( - Status.BAD_REQUEST, - GepafinConstant.EVALUATION_ALREADY_EXISTS_MSG - ); - }} if (existingEntityOptional.isPresent()) { entity = existingEntityOptional.get(); entity.setCriteria(Utils.convertObjectToJson(filterNonNullCriteria(processCriteria(entity, req)))); @@ -558,6 +553,8 @@ public class ApplicationEvaluationDao { response.setApplicationStatus(ApplicationStatusTypeEnum.valueOf(application.getStatus())); response.setStatus(ApplicationEvaluationStatusTypeEnum.valueOf(ApplicationEvaluationStatusTypeEnum.OPEN.getValue())); response.setMinScore(call.getThreshold()!=null?call.getThreshold():null); + LocalDateTime callEndDate = application.getCall().getEndDate(); + response.setCallEndDate(callEndDate); setCriteriaResponses(entity, application.getId(), response, evaluationCriterias); setChecklistResponses(entity, application.getId(), response, checklistEntities); setFileResponses(entity, application.getId(), response, applicationFormEntities); 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 08425f4c..f0be1236 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/response/ApplicationEvaluationResponse.java +++ b/src/main/java/net/gepafin/tendermanagement/model/response/ApplicationEvaluationResponse.java @@ -28,4 +28,5 @@ public class ApplicationEvaluationResponse { private String callName; private LocalDateTime submissionDate; private LocalDateTime evaluationDate; + private LocalDateTime callEndDate; } diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/AssignedApplicationsRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/AssignedApplicationsRepository.java index b9c02945..beeb4610 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/AssignedApplicationsRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/AssignedApplicationsRepository.java @@ -15,9 +15,13 @@ public interface AssignedApplicationsRepository extends JpaRepository 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); + "AND (:id IS NULL OR aa.id = :id) " + + "AND (:userId IS NULL OR aa.userId = :userId)") + Optional findByApplicationIdOrIdAndUserIdAndIsDeletedFalse( + @Param("applicationId") Long applicationId, + @Param("id") Long id, + @Param("userId") Long userId); + } 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 a5e0c8c4..691ae8f9 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationEvaluationServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationEvaluationServiceImpl.java @@ -50,29 +50,36 @@ public class ApplicationEvaluationServiceImpl implements ApplicationEvaluationSe @Transactional(readOnly = true) public ApplicationEvaluationResponse 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) ); } + UserEntity preInstructor = validator.validateUser(request); Optional assignedApplicationsOptional = - assignedApplicationsRepository.findByApplicationIdOrId(applicationId, assignedApplicationId); + assignedApplicationsRepository.findByApplicationIdOrIdAndUserIdAndIsDeletedFalse(applicationId,assignedApplicationId, preInstructor.getId()); + if (assignedApplicationId != null) { + assignedApplicationsOptional = assignedApplicationsOptional.filter(a -> a.getId().equals(assignedApplicationId)); + } AssignedApplicationsEntity assignedApplications = assignedApplicationsOptional .orElseThrow(() -> new CustomValidationException( Status.BAD_REQUEST, Translator.toLocale(GepafinConstant.ASSIGNED_APPLICATION_NOT_FOUND_WITH_ID_MSG) )); - UserEntity user = validator.validatePreInstructor(request, assignedApplications.getUserId()); + validator.validatePreInstructor(request, assignedApplications.getUserId()); + return applicationEvaluationDao.getApplicationEvaluationByApplicationId( - user, + preInstructor, assignedApplications.getApplication().getId(), assignedApplications.getId() ); } + @Override @Transactional(rollbackFor = Exception.class) public void deleteApplicationEvaluation(HttpServletRequest request,Long id) {