diff --git a/accelerators/inbox/src/main/java/org/egov/inbox/service/V2/InboxServiceV2.java b/accelerators/inbox/src/main/java/org/egov/inbox/service/V2/InboxServiceV2.java index fd553a34c4e..441548164bd 100644 --- a/accelerators/inbox/src/main/java/org/egov/inbox/service/V2/InboxServiceV2.java +++ b/accelerators/inbox/src/main/java/org/egov/inbox/service/V2/InboxServiceV2.java @@ -73,11 +73,9 @@ public InboxResponse getInboxResponse(InboxRequest inboxRequest) { inboxQueryConfiguration); List items = getInboxItems(inboxRequest, inboxQueryConfiguration.getIndex()); enrichProcessInstanceInInboxItems(items); - Integer totalCount = CollectionUtils.isEmpty(inboxRequest.getInbox().getProcessSearchCriteria().getStatus()) ? 0 - : getTotalApplicationCount(inboxRequest, inboxQueryConfiguration.getIndex()); - List> statusCountMap = CollectionUtils - .isEmpty(inboxRequest.getInbox().getProcessSearchCriteria().getStatus()) ? new ArrayList<>() - : getStatusCountMap(inboxRequest, inboxQueryConfiguration.getIndex()); + Integer totalCount = getTotalApplicationCount(inboxRequest, inboxQueryConfiguration.getIndex()); + List> statusCountMap = getStatusCountMap(inboxRequest, + inboxQueryConfiguration.getIndex()); Integer nearingSlaCount = CollectionUtils .isEmpty(inboxRequest.getInbox().getProcessSearchCriteria().getStatus()) ? 0 : getApplicationsNearingSlaCount(inboxRequest, inboxQueryConfiguration.getIndex()); @@ -194,12 +192,22 @@ public Integer getTotalApplicationCount(InboxRequest inboxRequest, String indexN } public List> getStatusCountMap(InboxRequest inboxRequest, String indexName) { + List businessServices = workflowService.getBusinessServices(inboxRequest); + + HashMap StatusIdNameMap = workflowService.getActionableStatusesForRole( + inboxRequest.getRequestInfo(), businessServices, + inboxRequest.getInbox().getProcessSearchCriteria()); + log.info(StatusIdNameMap.toString()); + List actionableStatus = new ArrayList<>(); + // add keys + StatusIdNameMap.keySet().forEach(actionableStatus::add); Map finalQueryBody = queryBuilder.getStatusCountQuery(inboxRequest); + log.info("Query for status count: " + finalQueryBody.toString()); StringBuilder uri = getURI(indexName, SEARCH_PATH); Map response = (Map) serviceRequestRepository.fetchResult(uri, finalQueryBody); - Set actionableStatuses = new HashSet<>(inboxRequest.getInbox().getProcessSearchCriteria().getStatus()); + Set actionableStatusHSet = new HashSet<>(actionableStatus); HashMap statusCountMap = parseStatusCountMapFromAggregationResponse(response, - actionableStatuses); + actionableStatusHSet); List> transformedStatusMap = transformStatusMap(inboxRequest, statusCountMap); return transformedStatusMap; } @@ -277,13 +285,15 @@ private List> transformStatusMap(InboxRequest request, for (Map.Entry entry : statusCountMap.entrySet()) { String statusId = entry.getKey(); Integer count = (Integer) entry.getValue(); - HashMap map = new HashMap<>(); - map.put(COUNT_CONSTANT, count); - map.put(APPLICATION_STATUS_KEY, statusIdToApplicationStatusMap.get(statusId)); - map.put(BUSINESSSERVICE_KEY, statusIdToBusinessServiceMap.get(statusId)); - map.put(STATUSID_KEY, statusId); - map.put(STATE_KEY, statusIdToStateMap.get(statusId)); - statusCountMapTransformed.add(map); + if (statusIdToStateMap.get(statusId) != null) { + HashMap map = new HashMap<>(); + map.put(COUNT_CONSTANT, count); + map.put(APPLICATION_STATUS_KEY, statusIdToApplicationStatusMap.get(statusId)); + map.put(BUSINESSSERVICE_KEY, statusIdToBusinessServiceMap.get(statusId)); + map.put(STATUSID_KEY, statusId); + map.put(STATE_KEY, statusIdToStateMap.get(statusId)); + statusCountMapTransformed.add(map); + } } return statusCountMapTransformed; } @@ -295,9 +305,11 @@ private HashMap parseStatusCountMapFromAggregationResponse(Map> statusCountBuckets = JsonPath.read(response, STATUS_COUNT_AGGREGATIONS_BUCKETS_PATH); HashMap statusCountMap = new HashMap<>(); + actionableStatuses.forEach(status -> { + statusCountMap.put(status, 0); + }); statusCountBuckets.forEach(bucket -> { - if (actionableStatuses.contains(bucket.get(KEY))) - statusCountMap.put((String) bucket.get(KEY), bucket.get(DOC_COUNT_KEY)); + statusCountMap.put((String) bucket.get(KEY), bucket.get(DOC_COUNT_KEY)); }); statusCountResponse.add(statusCountMap); }