diff --git a/aconnect/src/main/java/com/mfsys/aconnect/client/controller/PendingCRMApplicationsController.java b/aconnect/src/main/java/com/mfsys/aconnect/client/controller/PendingCRMApplicationsController.java index 5a60c53..8dc2ece 100644 --- a/aconnect/src/main/java/com/mfsys/aconnect/client/controller/PendingCRMApplicationsController.java +++ b/aconnect/src/main/java/com/mfsys/aconnect/client/controller/PendingCRMApplicationsController.java @@ -16,16 +16,23 @@ public class PendingCRMApplicationsController { this.inProcessApplicationsService = inProcessApplicationsService; } - @PostMapping(AconnectURI.CHECK_PENDING_APPLICATIONS_URI) - public ResponseEntity getInProcessApplications(@RequestBody InProcessApplicationsRequestDTO request, + @PostMapping(AconnectURI.GET_INDIVIDUAL_PENDING_APPLICATIONS_URI) + public ResponseEntity getIndividualPendingCRMs(@RequestBody InProcessApplicationsRequestDTO request, @RequestHeader("Authorization") String token, @RequestHeader("SUS_USERCODE") String susUserCode) { - return inProcessApplicationsService.getInProcessApplications(request, token, susUserCode); + return inProcessApplicationsService.getIndividualPendingCRM(request, token, susUserCode); } - @PostMapping(AconnectURI.CHECK_INDIVIDUAL_APPLICATIONS_URI) + @PostMapping(AconnectURI.GET_BUSINESS_PENDING_APPLICATIONS_URI) + public ResponseEntity getBusinessPendingCRMs(@RequestBody InProcessApplicationsRequestDTO request, + @RequestHeader("Authorization") String token, @RequestHeader("SUS_USERCODE") String susUserCode) { + return inProcessApplicationsService.getBusinessPendingCRM(request, token, susUserCode); + } + + @GetMapping(AconnectURI.CHECK_INDIVIDUAL_APPLICATIONS_URI) public ResponseEntitygetIndividualApplication( - @RequestBody InProcessApplicationsRequestDTO request, @RequestParam("workFlowRefNum") Long workFlowRefNum, + @RequestParam("POR_ORGACODE") String porOrgacode,@RequestParam("formId") String formId, + @RequestParam(value = "includeFields", required = false) String includeFields, @RequestHeader("Authorization") String token, @RequestHeader("SUS_USERCODE") String susUserCode){ - return inProcessApplicationsService.getPendingIndividualApplication(request, workFlowRefNum, token, susUserCode); + return inProcessApplicationsService.getPendingIndividualApplication(porOrgacode, formId, includeFields, token, susUserCode); } } diff --git a/aconnect/src/main/java/com/mfsys/aconnect/client/service/InProcessApplicationsService.java b/aconnect/src/main/java/com/mfsys/aconnect/client/service/InProcessApplicationsService.java index c246a93..5e59b55 100644 --- a/aconnect/src/main/java/com/mfsys/aconnect/client/service/InProcessApplicationsService.java +++ b/aconnect/src/main/java/com/mfsys/aconnect/client/service/InProcessApplicationsService.java @@ -65,7 +65,42 @@ public class InProcessApplicationsService { ); } - private LazyListRequestDTO buildLazyListPayload(InProcessApplicationsRequestDTO req) { + private Map businessBuildWorkflowFilter(InProcessApplicationsRequestDTO req) { + List workflowQueries = new ArrayList<>(); + + if (req.isIncludeRegistrationPending()) { + workflowQueries.add(Map.of( + "params", List.of( + param("workFlowStage", "BN_WF_BP_REGISTRATION", "text", "="), + param("applicationStatus", "Pending", "text", "=") + ), + "operator", "$and" + )); + } + if (req.isIncludeAuthorizationApproved()) { + workflowQueries.add(Map.of( + "params", List.of( + param("workFlowStage", "BN_WF_BP_AUTHORIZATION", "text", "="), + param("applicationStatus", "Approved", "text", "="), + param("postProcessCompleted", true, "boolean", "!=") + ), + "operator", "$and" + )); + } + workflowQueries.add(Map.of( + "params", List.of( + param("workFlowStage", "BN_WF_BP_REGISTRATION", "text", "="), + param("applicationStatus", "[\"Rejected\",\"Hold\"]", "text", "in") + ), + "operator", "$and" + )); + return Map.of( + "nestedQuery", workflowQueries, + "operator", "$or" + ); + } + + private LazyListRequestDTO indivdualBuildLazyListPayload(InProcessApplicationsRequestDTO req) { List rootQueries = new ArrayList<>(); @@ -106,12 +141,76 @@ public class InProcessApplicationsService { return dto; } - public ResponseEntity getInProcessApplications( + private LazyListRequestDTO BusinessBuildLazyListPayload(InProcessApplicationsRequestDTO req) { + + List rootQueries = new ArrayList<>(); + + rootQueries.add(Map.of( + "params", List.of( + param("POR_ORGACODE", req.getPorOrgacode(), "text", "="), + param("POR_ORGACODE_ENTRY", req.getPorOrgacode(), "text", "=") + ), + "operator", "$or" + )); + + rootQueries.add(Map.of( + "params", List.of( + param("PLC_LOCACODE", "[\"" + req.getPlclocacode() + "\"]", "text", "in"), + param("PLC_LOCACODE_ENTRY", "[\"" + req.getPlclocacode() + "\"]", "text", "in") + ), + "operator", "$or" + )); + + rootQueries.add(businessBuildWorkflowFilter(req)); + + LazyListRequestDTO dto = new LazyListRequestDTO(); + dto.setCollection("BN_WF_BP_BUSINESSPROFILE"); + dto.setFilter(Map.of( + "nestedQuery", rootQueries, + "operator", "$and" + )); + if (req.getLimit() != null) { + dto.setLimit(req.getLimit()); + } + dto.setSortBy("{\"workFlowRefNum\":-1}"); + dto.setIncludeFields(List.of( + "CMP_CUSTCODE", "CMP_COMPANYNAME", "workFlowRefNum", "applicationStatus", "workFlowStage", + "workFlowStage", "workFlowLog", "postProcessCompleted", "failureCause", + "postProcessInProgress" + )); + + return dto; + } + + public ResponseEntity getIndividualPendingCRM( + InProcessApplicationsRequestDTO request, String token, String susUserCode) { + + String url = crmURI + "/crm" + "/mongodb/lazylist"; + + LazyListRequestDTO payload = indivdualBuildLazyListPayload(request); + + HttpHeaders headers = new HttpHeaders(); + headers.set("Authorization", token); + headers.set("POR_ORGACODE", request.getPorOrgacode()); + headers.set("SUS_USERCODE", susUserCode); + headers.setContentType(MediaType.APPLICATION_JSON); + + HttpEntity entity = new HttpEntity<>(payload, headers); + + return restTemplate.exchange( + url, + HttpMethod.POST, + entity, + String.class + ); + } + + public ResponseEntity getBusinessPendingCRM( InProcessApplicationsRequestDTO request, String token, String susUserCode) { String url = crmURI + "/crm" + "/mongodb/lazylist"; - LazyListRequestDTO payload = buildLazyListPayload(request); + LazyListRequestDTO payload = BusinessBuildLazyListPayload(request); HttpHeaders headers = new HttpHeaders(); headers.set("Authorization", token); diff --git a/common/src/main/java/com/mfsys/common/configuration/constant/AconnectURI.java b/common/src/main/java/com/mfsys/common/configuration/constant/AconnectURI.java index 2a447af..07b913a 100644 --- a/common/src/main/java/com/mfsys/common/configuration/constant/AconnectURI.java +++ b/common/src/main/java/com/mfsys/common/configuration/constant/AconnectURI.java @@ -30,10 +30,13 @@ public interface AconnectURI { String GL_TO_ACCOUNT_TRANSACTION_URI = TRANSACTION_URI + "/gl-account"; String INDIVIDUAL_CRM_CREATION_URI = CRM + INDIVIDUAL + "/create"; String APPROVE_INDIVIDUAL_CRM_URI = CRM + INDIVIDUAL + "/approve"; - String CHECK_PENDING_APPLICATIONS_URI = CRM + "/inprocess"; + String GET_INDIVIDUAL_PENDING_APPLICATIONS_URI = CRM + INDIVIDUAL + "/pending-workflow"; + String CHECK_INDIVIDUAL_PENDING_APPLICATIONS_URI = CRM + INDIVIDUAL + "/inprocess"; String CHECK_INDIVIDUAL_APPLICATIONS_URI = CRM + INDIVIDUAL + "/inprocess"; String CHECK_INPROCESS_DEPOSIT_APPLICATIONS_URI = DEPOSIT + "/inprocess"; String CHECK_INDIVIDUAL_DEPOSIT_APPLICATIONS_URI = DEPOSIT + INDIVIDUAL + "/inprocess"; + String GET_BUSINESS_PENDING_APPLICATIONS_URI = CRM + BUSINESS + "/pending-workflow"; + String CHECK_BUSINESS_APPLICATIONS_URI = CRM + BUSINESS + "/inprocess"; String BUSINESS_CRM_CREATION_URI = CRM + BUSINESS + "/create"; String INDIVIDUAL_DEPOSIT_CREATION_URI = DEPOSIT + INDIVIDUAL + "/create"; String UPDATE_DEPOSIT_CREATION_URI = DEPOSIT + INDIVIDUAL + "/approval"; diff --git a/common/src/main/java/com/mfsys/common/configuration/constant/TokenBypassURI.java b/common/src/main/java/com/mfsys/common/configuration/constant/TokenBypassURI.java index 1b0f819..b8372a5 100644 --- a/common/src/main/java/com/mfsys/common/configuration/constant/TokenBypassURI.java +++ b/common/src/main/java/com/mfsys/common/configuration/constant/TokenBypassURI.java @@ -13,6 +13,8 @@ public interface TokenBypassURI { "/aconnect/transactions/accounttogl", "/aconnect/crm/individual/approve", "/aconnect/crm/inprocess", + "/aconnect/crm/individual/pending-workflow", + "/aconnect/crm/business/pending-workflow", "/aconnect/crm/individual/inprocess", "/aconnect/deposit/inprocess", "/aconnect/deposit/individual/inprocess",