From 14887a75acc11b7577728e9e44e9cebb6ee955e7 Mon Sep 17 00:00:00 2001 From: rajesh Date: Sat, 14 Sep 2024 13:07:51 +0530 Subject: [PATCH] updated code for next form api --- .../tendermanagement/dao/FlowFormDao.java | 40 ++++++++++++++----- .../ApplicationFormRepository.java | 2 + .../service/ApplicationService.java | 2 +- .../service/impl/ApplicationServiceImpl.java | 8 ++-- .../web/rest/api/ApplicationApi.java | 7 ++-- .../api/impl/ApplicationApiController.java | 4 +- 6 files changed, 41 insertions(+), 22 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/FlowFormDao.java b/src/main/java/net/gepafin/tendermanagement/dao/FlowFormDao.java index e0fa11d5..7163f1f6 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/FlowFormDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/FlowFormDao.java @@ -1,6 +1,7 @@ package net.gepafin.tendermanagement.dao; import java.util.List; +import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; @@ -22,6 +23,7 @@ import net.gepafin.tendermanagement.repositories.ApplicationFormRepository; import net.gepafin.tendermanagement.repositories.FlowDataRepository; import net.gepafin.tendermanagement.repositories.FlowEdgesRepository; import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationException; +import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException; import net.gepafin.tendermanagement.web.rest.api.errors.Status; @Component @@ -39,6 +41,7 @@ public class FlowFormDao { @Autowired private ApplicationFormRepository applicationFormRepository; + // Long getNextForm(FormEntity currentFormEntity, ApplicationEntity applicationEntity) { // // vlaidation if next form findout and cuuent from is not fill the give error // List flowEdgesList = flowEdgesRepository.findBySourceIdAndCallId(currentFormEntity.getId(), applicationEntity.getCall().getId()); @@ -166,11 +169,6 @@ public class FlowFormDao { .map(FlowDataEntity::getFormId) .orElse(null); } - - - - - public Long getPreviousForm(FormEntity currentFormEntity, ApplicationEntity applicationEntity) { // Retrieve the flow edges for the previous forms @@ -218,20 +216,40 @@ public class FlowFormDao { .findFirst().orElse(null); } - - - - public NextOrPreviousFormResponse getnextOrPreviousForm(ApplicationEntity applicationEntity, FormEntity formEntity, + public NextOrPreviousFormResponse getnextOrPreviousForm(ApplicationEntity applicationEntity, Long formId, FormActionEnum action) { + FormEntity fromEntity = null; + if(formId == null) { + NextOrPreviousFormResponse nextOrPreviousFormResponse = new NextOrPreviousFormResponse(); + nextOrPreviousFormResponse.setNextFormId(getDefaultForm(applicationEntity)); + return nextOrPreviousFormResponse; + }else { + fromEntity = Optional + .of(applicationFormRepository.findByApplicationIdAndFormId(applicationEntity.getId(), formId)) + .orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, + Translator.toLocale(GepafinConstant.FORM_NOT_FOUND))) + .getForm(); + } NextOrPreviousFormResponse nextOrPreviousFormResponse = new NextOrPreviousFormResponse(); if (action.equals(FormActionEnum.NEXT)) { - nextOrPreviousFormResponse.setNextFormId(getNextForm(formEntity, applicationEntity)); + nextOrPreviousFormResponse.setNextFormId(getNextForm(fromEntity, applicationEntity)); } else { - nextOrPreviousFormResponse.setPreviousFormId(getPreviousForm(formEntity, applicationEntity)); + nextOrPreviousFormResponse.setPreviousFormId(getPreviousForm(fromEntity, applicationEntity)); } return nextOrPreviousFormResponse; } + + private Long getDefaultForm(ApplicationEntity applicationEntity) { + List applicationFormList = applicationFormRepository.findByApplicationIdOrderByCreatedDateAsc(applicationEntity.getId()); + if(applicationFormList.isEmpty()) { + 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); + } } diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationFormRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationFormRepository.java index f742925b..992eece3 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationFormRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationFormRepository.java @@ -15,4 +15,6 @@ public interface ApplicationFormRepository extends JpaRepository findByApplicationId(Long applicationId); + public List findByApplicationIdOrderByCreatedDateAsc(Long applicationId); + } diff --git a/src/main/java/net/gepafin/tendermanagement/service/ApplicationService.java b/src/main/java/net/gepafin/tendermanagement/service/ApplicationService.java index f746c861..16065d6d 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/ApplicationService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/ApplicationService.java @@ -22,7 +22,7 @@ public interface ApplicationService { public ApplicationEntity validateApplication(Long userId); - public NextOrPreviousFormResponse getnextOrPreviousForm(HttpServletRequest request, Long formId, FormActionEnum action); + public NextOrPreviousFormResponse getnextOrPreviousForm(HttpServletRequest request, Long applicationId, Long formId, FormActionEnum action); public void updateApplicationStatus(HttpServletRequest request, Long applicationId, ApplicationStatusTypeEnum status); } 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 17af38ba..5f07b619 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationServiceImpl.java @@ -69,12 +69,10 @@ public class ApplicationServiceImpl implements ApplicationService { } @Override - public NextOrPreviousFormResponse getnextOrPreviousForm(HttpServletRequest request, Long formId, + public NextOrPreviousFormResponse getnextOrPreviousForm(HttpServletRequest request, Long applicationId, Long formId, FormActionEnum action) { - UserEntity userEntity = validator.validateUser(request); - FormEntity formEntity = formService.validateForm(formId); - ApplicationEntity applicationEntity = applicationDao.getApplicationByCallAndUser(formEntity.getCall(), userEntity); - return flowFormDao.getnextOrPreviousForm(applicationEntity, formEntity, action); + ApplicationEntity applicationEntity = validateApplication(applicationId); + return flowFormDao.getnextOrPreviousForm(applicationEntity, formId, action); } @Override diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/ApplicationApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/ApplicationApi.java index ab31c12b..5a2736a0 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/ApplicationApi.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/ApplicationApi.java @@ -93,10 +93,11 @@ public interface ApplicationApi { @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) })) }) - @GetMapping(value = "form/{formId}", produces = "application/json") + @GetMapping(value = "/{applicationId}/form/next-previous", produces = "application/json") ResponseEntity> getnextOrPreviousForm(HttpServletRequest request, - @Parameter(description = "The form id", required = true) @PathVariable("formId") Long formId, - @RequestParam("action") FormActionEnum action); + @Parameter(description = "The applicaltion id", required = true) @PathVariable("applicationId") Long applicationId, + @Parameter(description = "The form id", required = false) @RequestParam(value = "formId", required = false) Long formId, + @RequestParam("action") FormActionEnum action); @Operation(summary = "Api to update application status", diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/ApplicationApiController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/ApplicationApiController.java index d984ae1c..3644d83f 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/ApplicationApiController.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/ApplicationApiController.java @@ -65,9 +65,9 @@ public class ApplicationApiController implements ApplicationApi { } @Override - public ResponseEntity> getnextOrPreviousForm(HttpServletRequest request, + public ResponseEntity> getnextOrPreviousForm(HttpServletRequest request,Long applicationId, Long formId, FormActionEnum action) { - NextOrPreviousFormResponse data = applicationService.getnextOrPreviousForm(request, formId, action); + NextOrPreviousFormResponse data = applicationService.getnextOrPreviousForm(request, applicationId, formId, action); log.info("Get Next Or Previous Form "); return ResponseEntity.status(HttpStatus.OK) .body(new Response<>(data, Status.SUCCESS, Translator.toLocale(GepafinConstant.GET_APPLICATION_SUCCESS_MSG)));