From f838da73ef3d074208c8654cee3e88c15a6d2e2c Mon Sep 17 00:00:00 2001 From: harish Date: Fri, 4 Oct 2024 19:03:33 +0530 Subject: [PATCH] Fixed next pervious issue --- .../tendermanagement/dao/FlowFormDao.java | 31 +++++++++++++------ .../service/impl/ApplicationServiceImpl.java | 2 +- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/FlowFormDao.java b/src/main/java/net/gepafin/tendermanagement/dao/FlowFormDao.java index b99ba6c2..013f018c 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/FlowFormDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/FlowFormDao.java @@ -240,15 +240,17 @@ public class FlowFormDao { List previousFormIds = flowEdgesList.stream() .map(FlowEdgesEntity::getSourceId) .toList(); + if (previousFormIds.size() == 1) { + return previousFormIds.get(0); + } List applicationFormEntities=applicationFormRepository.findByFormIdInAndApplicationId(previousFormIds,applicationEntity.getId()); - applicationFormEntities.sort(Comparator.comparing(ApplicationFormEntity::getCreatedDate).reversed()); return applicationFormEntities.isEmpty() ? null : applicationFormEntities.get(0).getForm().getId(); } - public NextOrPreviousFormResponse getnextOrPreviousForm(ApplicationEntity applicationEntity, Long formId, - FormActionEnum action) { + public NextOrPreviousFormResponse getNextOrPreviousForm(ApplicationEntity applicationEntity, Long formId, + FormActionEnum action) { Long calculatedFormId = null; FormEntity formEntity = null; if (formId == null) { @@ -299,7 +301,7 @@ public class FlowFormDao { List flowEdgesList = flowEdgesRepository.findByCallId(applicationEntity.getCall().getId()); Long totalFormSteps = calculateTotalSteps(flowEdgesList); - Long currentStep = calculateCurrentStep(formEntity); + Long currentStep = calculateCurrentStep(flowEdgesList, formEntity); nextOrPreviousFormResponse.setTotalFormSteps(totalFormSteps); completedSteps = getCompletedSteps(applicationEntity); nextOrPreviousFormResponse.setCompletedSteps(Long.valueOf(completedSteps)); @@ -321,11 +323,11 @@ public class FlowFormDao { return completedSteps; } - public Long calculateCurrentStep(FormEntity formEntity) { + public Long calculateCurrentStep(List flowEdgesList, FormEntity formEntity) { Long currentStep = 2l; if (formEntity.getId().equals(formEntity.getCall().getInitialForm())) { currentStep = 1l; - } else if (formEntity.getId().equals(formEntity.getCall().getFinalForm())) { + } else if (flowEdgesList.size()>1 && formEntity.getId().equals(formEntity.getCall().getFinalForm())) { currentStep = 3l; } return currentStep; @@ -341,13 +343,22 @@ public class FlowFormDao { private Long getDefaultForm(ApplicationEntity applicationEntity) { List applicationFormList = applicationFormRepository.findByApplicationIdOrderByCreatedDateAsc(applicationEntity.getId()); - if(applicationFormList.isEmpty()) { + if (applicationFormList.isEmpty()) { return applicationEntity.getCall().getInitialForm(); } - if(applicationFormList.get(applicationFormList.size()-1).getForm().getId().equals(applicationEntity.getCall().getFinalForm())) { - return applicationEntity.getCall().getInitialForm(); + if (applicationFormList.get(applicationFormList.size() - 1).getForm().getId().equals(applicationEntity.getCall().getFinalForm())) { + return applicationEntity.getCall().getInitialForm(); } - return getNextForm(applicationFormList.get(applicationFormList.size()-1).getForm(), applicationEntity); + FormEntity currentFormEntity = applicationFormList.get(applicationFormList.size() - 1).getForm(); + + for (ApplicationFormEntity applicationFormEntity : applicationFormList) { + Boolean isCompleted = formDao.validateCompletedSteps(applicationFormFieldRepository.findByApplicationFormId(applicationFormEntity.getId()), applicationEntity, applicationFormEntity.getForm()); + if (Boolean.FALSE.equals(isCompleted)) { + currentFormEntity = applicationFormEntity.getForm(); + break; + } + } + return getNextForm(currentFormEntity, applicationEntity); } diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationServiceImpl.java index a64afadf..c69354b2 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationServiceImpl.java @@ -72,7 +72,7 @@ public class ApplicationServiceImpl implements ApplicationService { public NextOrPreviousFormResponse getNextOrPreviousForm(HttpServletRequest request, Long applicationId, Long formId, FormActionEnum action) { ApplicationEntity applicationEntity = validateApplication(applicationId); - return flowFormDao.getnextOrPreviousForm(applicationEntity, formId, action); + return flowFormDao.getNextOrPreviousForm(applicationEntity, formId, action); } @Override