diff --git a/src/main/java/com/tarento/formservice/controllers/FormsController.java b/src/main/java/com/tarento/formservice/controllers/FormsController.java index 3600f66afe8fda56d99d450be28e1d3fe12be586..cb030106551d13f7e96fde871eab92db2221074d 100644 --- a/src/main/java/com/tarento/formservice/controllers/FormsController.java +++ b/src/main/java/com/tarento/formservice/controllers/FormsController.java @@ -102,7 +102,7 @@ public class FormsController { } return ResponseGenerator.successResponse(formsService.getFormById(formId)); } - + @PostMapping(value = PathRoutes.FormServiceApi.CREATE_FORM) public String createForm(@RequestBody FormDetail form, @RequestHeader(value = Constants.Parameters.X_USER_INFO, required = false) String xUserInfo) @@ -533,17 +533,14 @@ public class FormsController { } return ResponseGenerator.failureResponse(); } - + @GetMapping(value = PathRoutes.FormServiceApi.GET_ALL_FORM_STATUS) public String getAllFormStatus() throws IOException { - final List<KeyValue> modelList = new ArrayList<>(); - for (final Status key : Status.values()) - modelList.add(new KeyValue(key.name(), key)); - return ResponseGenerator.successResponse(modelList); + final List<KeyValue> modelList = new ArrayList<>(); + for (final Status key : Status.values()) + modelList.add(new KeyValue(key.name(), key)); + return ResponseGenerator.successResponse(modelList); } - - - @PostMapping(value = PathRoutes.FormServiceApi.GPS_TAGGING) public String gpsTagging(@RequestBody IncomingData incomingData, @@ -563,7 +560,6 @@ public class FormsController { return ResponseGenerator.successResponse(Boolean.TRUE); } } - return ResponseGenerator.failureResponse(); } diff --git a/src/main/java/com/tarento/formservice/model/AssignApplication.java b/src/main/java/com/tarento/formservice/model/AssignApplication.java index 9f0cef5558551034d01c12573eb2c28ed7801533..12c1803482ebe46058639fe312a8dad409548b70 100644 --- a/src/main/java/com/tarento/formservice/model/AssignApplication.java +++ b/src/main/java/com/tarento/formservice/model/AssignApplication.java @@ -18,15 +18,6 @@ public class AssignApplication { private List<Long> assistingInspector; private List<Long> leadInspector; private Long formId; - private List<Long> userId; - - public List<Long> getUserId() { - return userId; - } - - public void setUserId(List<Long> userId) { - this.userId = userId; - } public List<Long> getAssistingInspector() { return assistingInspector; diff --git a/src/main/java/com/tarento/formservice/model/SearchRequestDto.java b/src/main/java/com/tarento/formservice/model/SearchRequestDto.java index 4c5b68f96f289d87011ef77ff81104b07d0e04a6..b54b3a2a7e1fcd755c9e20ed2d8c4ed6659f10af 100644 --- a/src/main/java/com/tarento/formservice/model/SearchRequestDto.java +++ b/src/main/java/com/tarento/formservice/model/SearchRequestDto.java @@ -9,6 +9,7 @@ import java.util.List; public class SearchRequestDto { private List<SearchObject> searchObjects; private List<SearchObject> excludeObject; + private List<SearchObject> filterObjects; public List<SearchObject> getSearchObjects() { return searchObjects; @@ -26,4 +27,12 @@ public class SearchRequestDto { this.excludeObject = excludeObject; } + public List<SearchObject> getFilterObjects() { + return filterObjects; + } + + public void setFilterObjects(List<SearchObject> filterObjects) { + this.filterObjects = filterObjects; + } + } diff --git a/src/main/java/com/tarento/formservice/service/impl/FormsServiceImpl.java b/src/main/java/com/tarento/formservice/service/impl/FormsServiceImpl.java index 4474dff297a3c201c39f7e3c6f4835d9a7210c57..d75516860ae534165a9a96b4509115435a4eb173 100644 --- a/src/main/java/com/tarento/formservice/service/impl/FormsServiceImpl.java +++ b/src/main/java/com/tarento/formservice/service/impl/FormsServiceImpl.java @@ -694,7 +694,11 @@ public class FormsServiceImpl implements FormsService { SearchRequest searchRequest = new SearchRequest(appConfig.getFormDataIndex()) .types(appConfig.getFormIndexType()).source(searchSourceBuilder); LOGGER.info("Search Request : " + searchRequest); - return formsDao.searchResponse(searchRequest); + List<Map<String, Object>> response = formsDao.searchResponse(searchRequest); + if (searchRequestDto != null && searchRequestDto.getFilterObjects() != null) { + return filterSearchResults(response, searchRequestDto.getFilterObjects(), userInfo); + } + return response; } catch (Exception e) { LOGGER.error(String.format(Constants.EXCEPTION, "getApplications", e.getMessage())); @@ -702,6 +706,36 @@ public class FormsServiceImpl implements FormsService { return null; } + /** + * Add filters in search response + */ + private List<Map<String, Object>> filterSearchResults(List<Map<String, Object>> response, + List<SearchObject> filterObjects, UserInfo userInfo) throws Exception { + if (filterObjects != null && filterObjects.size() > 0) { + List<Map<String, Object>> filteredResponse = new ArrayList<>(); + for (SearchObject searchObj : filterObjects) { + if (searchObj.getKey().equals(Constants.Parameters.TO_CONSENT) + && searchObj.getValues().equals(Boolean.TRUE)) { + for (Map<String, Object> responseObj : response) { + IncomingData incomingData = objectMapper.convertValue(responseObj, IncomingData.class); + if (incomingData.getInspection() != null + && incomingData.getInspection().getStatus().equals(Status.LEADINSCOMPLETED.name()) + && incomingData.getInspection().getAssignedTo() != null) { + for (Assignee assignee : incomingData.getInspection().getAssignedTo()) { + if (assignee.getId().equals(userInfo.getId()) + && StringUtils.isBlank(assignee.getStatus())) { + filteredResponse.add(responseObj); + } + } + } + } + } + } + return filteredResponse; + } + return response; + } + private void setRoleBasedSearchObject(UserInfo userInfo, SearchRequestDto searchRequestDto) { if (userInfo != null && userInfo.getRoles() != null) { for (Role role : userInfo.getRoles()) { @@ -748,39 +782,41 @@ public class FormsServiceImpl implements FormsService { public KeyValueList getApplicationsStatusCount(UserInfo userInfo) { try { // query builder - - if(userInfo != null && userInfo.getRoles() != null) { - for(Role role : userInfo.getRoles()) { - if(role.getName().equals(Roles.Regulator.name())) { + + if (userInfo != null && userInfo.getRoles() != null) { + for (Role role : userInfo.getRoles()) { + if (role.getName().equals(Roles.Regulator.name())) { SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder().size(0); searchSourceBuilder.aggregation(AggregationBuilders.terms("Total Pending") .field(Constants.ElasticSearchFields.MAPPING.get(Constants.STATUS))); SearchRequest searchRequest = new SearchRequest(appConfig.getFormDataIndex()) .types(appConfig.getFormIndexType()).source(searchSourceBuilder); LOGGER.info("Search Request : " + searchRequest); - List<Map<String, Object>> responseNode = formsDao.searchAggregationResponse(searchRequest, "Total Pending"); + List<Map<String, Object>> responseNode = formsDao.searchAggregationResponse(searchRequest, + "Total Pending"); return translateResponse(responseNode); - } else { - // Setting all prerequisites + } else { + // Setting all prerequisites List<SearchRequest> searchRequestList = new ArrayList<SearchRequest>(); - List<Map<String, Object>> responseNode = new ArrayList<Map<String,Object>>(); - List<Long> userIdList = new ArrayList<Long>(); - userIdList.add(userInfo.getId()); + List<Map<String, Object>> responseNode = new ArrayList<Map<String, Object>>(); + List<Long> userIdList = new ArrayList<Long>(); + userIdList.add(userInfo.getId()); Calendar cal = Calendar.getInstance(); cal.setTime(new Date()); - String dateFormat = "" + cal.get(Calendar.YEAR) + "-" + cal.get(Calendar.MONTH + 1) + "-" + cal.get(Calendar.DAY_OF_MONTH); - KeyValueList finalList = new KeyValueList(); - List<KeyValue> keyValueList = new ArrayList<>(); + String dateFormat = "" + cal.get(Calendar.YEAR) + "-" + cal.get(Calendar.MONTH + 1) + "-" + + cal.get(Calendar.DAY_OF_MONTH); + KeyValueList finalList = new KeyValueList(); + List<KeyValue> keyValueList = new ArrayList<>(); finalList.setKeyValues(keyValueList); - + // Creating Search Request for Total Pending - TermsQueryBuilder userIdFilter = QueryBuilders.termsQuery("inspection.leadInspector", userIdList); - TermQueryBuilder inspectionStatusFilter = QueryBuilders.termQuery("inspection.status.keyword", "SENTFORINS"); + TermsQueryBuilder userIdFilter = QueryBuilders.termsQuery("inspection.leadInspector", + userIdList); + TermQueryBuilder inspectionStatusFilter = QueryBuilders.termQuery("inspection.status.keyword", + "SENTFORINS"); TermQueryBuilder statusFilter = QueryBuilders.termQuery("status.keyword", "SENTFORINS"); - BoolQueryBuilder filters = QueryBuilders.boolQuery() - .filter(userIdFilter) - .filter(inspectionStatusFilter) - .filter(statusFilter); + BoolQueryBuilder filters = QueryBuilders.boolQuery().filter(userIdFilter) + .filter(inspectionStatusFilter).filter(statusFilter); FilterAggregationBuilder totalPendingAggregationFilter = AggregationBuilders .filter("Inspector Total Pending", filters).subAggregation(AggregationBuilders .cardinality("Count").field("inspection.applicationId.keyword")); @@ -789,15 +825,16 @@ public class FormsServiceImpl implements FormsService { SearchRequest totalPendingSearchRequest = new SearchRequest(appConfig.getFormDataIndex()) .types(appConfig.getFormIndexType()).source(totalPendingAggrSourceBuilder); LOGGER.info("Search Request : " + totalPendingSearchRequest); - List<Map<String, Object>> totalPendingResponse = formsDao.searchAggregationResponse(totalPendingSearchRequest, "Inspector Total Pending"); + List<Map<String, Object>> totalPendingResponse = formsDao + .searchAggregationResponse(totalPendingSearchRequest, "Inspector Total Pending"); KeyValueList list = translateResponse(totalPendingResponse); - finalList.getKeyValues().addAll(list.getKeyValues()); - - // Creating Search Request for Received Today - TermQueryBuilder assignedDateFilter = QueryBuilders.termQuery("inspection.assignedDate", new Date().getTime()); - BoolQueryBuilder filters2 = QueryBuilders.boolQuery() - .filter(userIdFilter) - .filter(assignedDateFilter); + finalList.getKeyValues().addAll(list.getKeyValues()); + + // Creating Search Request for Received Today + TermQueryBuilder assignedDateFilter = QueryBuilders.termQuery("inspection.assignedDate", + new Date().getTime()); + BoolQueryBuilder filters2 = QueryBuilders.boolQuery().filter(userIdFilter) + .filter(assignedDateFilter); FilterAggregationBuilder receivedTodayAggregationFilter = AggregationBuilders .filter("Received Today", filters2).subAggregation(AggregationBuilders .cardinality("Count").field("inspection.applicationId.keyword")); @@ -806,17 +843,18 @@ public class FormsServiceImpl implements FormsService { SearchRequest receivedTodaySearchRequest = new SearchRequest(appConfig.getFormDataIndex()) .types(appConfig.getFormIndexType()).source(receivedTodayAggrSourceBuilder); LOGGER.info("Search Request : " + receivedTodaySearchRequest); - List<Map<String, Object>> receivedTodayResponse = formsDao.searchAggregationResponse(receivedTodaySearchRequest, "Received Today"); + List<Map<String, Object>> receivedTodayResponse = formsDao + .searchAggregationResponse(receivedTodaySearchRequest, "Received Today"); list = translateResponse(receivedTodayResponse); - finalList.getKeyValues().addAll(list.getKeyValues()); - + finalList.getKeyValues().addAll(list.getKeyValues()); + // Creating Search Request for Reviewed Today - TermQueryBuilder updatedDateFilter = QueryBuilders.termQuery("inspection.updatedDate", new Date().getTime()); - TermQueryBuilder inspectionCompletedFilter = QueryBuilders.termQuery("status.keyword", "INSCOMPLETED"); - BoolQueryBuilder filters3 = QueryBuilders.boolQuery() - .filter(userIdFilter) - .filter(updatedDateFilter) - .filter(inspectionCompletedFilter); + TermQueryBuilder updatedDateFilter = QueryBuilders.termQuery("inspection.updatedDate", + new Date().getTime()); + TermQueryBuilder inspectionCompletedFilter = QueryBuilders.termQuery("status.keyword", + "INSCOMPLETED"); + BoolQueryBuilder filters3 = QueryBuilders.boolQuery().filter(userIdFilter) + .filter(updatedDateFilter).filter(inspectionCompletedFilter); FilterAggregationBuilder reviewedTodayAggregationFilter = AggregationBuilders .filter("Reviewed Today", filters3).subAggregation(AggregationBuilders .cardinality("Count").field("inspection.applicationId.keyword")); @@ -825,18 +863,17 @@ public class FormsServiceImpl implements FormsService { SearchRequest reviewedTodaySearchRequest = new SearchRequest(appConfig.getFormDataIndex()) .types(appConfig.getFormIndexType()).source(reviewedTodayAggrSourceBuilder); LOGGER.info("Search Request : " + reviewedTodaySearchRequest); - List<Map<String, Object>> reviewedTodayResponse = formsDao.searchAggregationResponse(reviewedTodaySearchRequest, "Reviewed Today"); + List<Map<String, Object>> reviewedTodayResponse = formsDao + .searchAggregationResponse(reviewedTodaySearchRequest, "Reviewed Today"); list = translateResponse(reviewedTodayResponse); finalList.getKeyValues().addAll(list.getKeyValues()); - - - return finalList; - + + return finalList; + } } } - - + } catch (Exception ex) { LOGGER.error(String.format(Constants.EXCEPTION, "getApplicationsStatusCount", ex.getMessage())); } @@ -857,14 +894,13 @@ public class FormsServiceImpl implements FormsService { list.setKeyValues(listOfKeyValuePairs); return list; } - + KeyValueList translateInspectorResponse(List<Map<String, Object>> responseNode) { KeyValueList list = new KeyValueList(); List<KeyValue> listOfKeyValuePairs = new ArrayList<KeyValue>(); for (Map<String, Object> eachMap : responseNode) { List<KeyValue> keyValueList = eachMap.entrySet().stream() - .map(entry -> new KeyValue(entry.getKey(), entry.getValue())) - .collect(Collectors.toList()); + .map(entry -> new KeyValue(entry.getKey(), entry.getValue())).collect(Collectors.toList()); listOfKeyValuePairs.addAll(keyValueList); } list.setKeyValues(listOfKeyValuePairs); diff --git a/src/main/java/com/tarento/formservice/utils/Constants.java b/src/main/java/com/tarento/formservice/utils/Constants.java index a782146a73838cbe347e52b6124a138f34db7c28..9a6dc2ddf3bc976132db5fd464db9d78534137b0 100644 --- a/src/main/java/com/tarento/formservice/utils/Constants.java +++ b/src/main/java/com/tarento/formservice/utils/Constants.java @@ -74,6 +74,9 @@ public interface Constants { static final String UPDATED_BY = "updatedBy"; static final String UPDATED_DATE = "updatedDate"; static final String UPDATED_BY_EMAIL = "updatedByEmail"; + + // filters + static final String TO_CONSENT = "toConsent"; } interface WorkflowActions {