From ab301b4a7ee84591a5bdcc687cc2becc452d0b09 Mon Sep 17 00:00:00 2001
From: Darshan Nagesh <darshan.nagesh@tarento.com>
Date: Mon, 11 Apr 2022 13:04:52 +0530
Subject: [PATCH] Adding Average Days taken Visualization

---
 .../analytics/handler/IResponseHandler.java   |  2 ++
 .../service/impl/QueryServiceImpl.java        |  8 ++++-
 .../resources/schema/SMF_ChartApiConfig.json  | 30 +++++++++++++++++++
 .../schema/SMF_MasterDashboardConfig.json     |  9 ++++++
 4 files changed, 48 insertions(+), 1 deletion(-)

diff --git a/src/main/java/com/tarento/analytics/handler/IResponseHandler.java b/src/main/java/com/tarento/analytics/handler/IResponseHandler.java
index d299aaa..d5d8768 100644
--- a/src/main/java/com/tarento/analytics/handler/IResponseHandler.java
+++ b/src/main/java/com/tarento/analytics/handler/IResponseHandler.java
@@ -217,6 +217,8 @@ public interface IResponseHandler {
 				sortedMap.get(plKey).setValue(value);
 			}
 		}
+		
+	
 		logger.info("after appending missing plots : "+ sortedMap);
 		data.setPlots(sortedMap.values().stream().collect(Collectors.toList()));
 	}
diff --git a/src/main/java/com/tarento/analytics/service/impl/QueryServiceImpl.java b/src/main/java/com/tarento/analytics/service/impl/QueryServiceImpl.java
index 6ece414..f674f85 100644
--- a/src/main/java/com/tarento/analytics/service/impl/QueryServiceImpl.java
+++ b/src/main/java/com/tarento/analytics/service/impl/QueryServiceImpl.java
@@ -416,7 +416,13 @@ public class QueryServiceImpl implements QueryService {
 	@Override
 	public ObjectNode getChartConfigurationQuery(AggregateRequestDto request, JsonNode query, String indexName,
 			String interval) {
-		String aggrQuery = query.get(Constants.JsonPaths.AGGREGATION_QUERY).asText();
+		String visualizationCode = request.getVisualizationCode();
+		String aggrQuery = null; 
+		if("averageDaysTakenToCompleteInspection".equals(visualizationCode)) { 
+			aggrQuery = "{\"aggs\":{\"Filters\":{\"filter\":{\"exists\":{\"field\":\"createdDate\"}},\"aggs\":{\"Filters2\":{\"filter\":{\"exists\":{\"field\":\"inspection.inspectionCompletedDate\"}},\"aggs\":{\"Average Response Days\":{\"avg\":{\"script\":\"(doc['inspection.inspectionCompletedDate'].value.toInstant().toEpochMilli()- doc['createdDate'].value.toInstant().toEpochMilli())/1000/86400\"}}}}}}}}";  
+		} else { 
+			aggrQuery = query.get(Constants.JsonPaths.AGGREGATION_QUERY).asText();
+		}
 		if (interval != null && !interval.isEmpty())
 			aggrQuery = aggrQuery.replace(Constants.JsonPaths.INTERVAL_VAL, interval);
 		String rqMs = query.get(Constants.JsonPaths.REQUEST_QUERY_MAP).asText();
diff --git a/src/main/resources/schema/SMF_ChartApiConfig.json b/src/main/resources/schema/SMF_ChartApiConfig.json
index 4bc1987..61283d9 100644
--- a/src/main/resources/schema/SMF_ChartApiConfig.json
+++ b/src/main/resources/schema/SMF_ChartApiConfig.json
@@ -168,6 +168,36 @@
     "Application Inspection Trend",
       "Application Submission Trend"
       
+    ],
+    "isCumulative": true,
+    "interval": "day",
+    "alwaysView": "",
+    "insight": {},
+    "_comment": " "
+  },
+  "averageDaysTakenToCompleteInspection": {
+    "chartName": "Average Days Taken to Complete Inspection",
+    "queries": [
+      {
+        "module": "COMMON",
+        "requestQueryMap": "{\r\n  \"ts\" : \"timestamp\"}",
+        "dateRefField": "timestamp",
+        "indexName": "fs-forms-data",
+        "esInstance": "QUADNARY",
+        "aggrQuery": ""
+      }
+    ],
+    "chartType": "metric",
+    "resultType": "value",
+    "valueType": "number",
+    "isDecimal": true,
+    "action": "",
+    "filter": "",
+    "drillChart": "none",
+    "documentType": "_doc",
+    "aggregationPaths": [
+    "Average Response Days"
+      
     ],
     "isCumulative": true,
     "interval": "day",
diff --git a/src/main/resources/schema/SMF_MasterDashboardConfig.json b/src/main/resources/schema/SMF_MasterDashboardConfig.json
index 7f96693..1de3959 100644
--- a/src/main/resources/schema/SMF_MasterDashboardConfig.json
+++ b/src/main/resources/schema/SMF_MasterDashboardConfig.json
@@ -28,6 +28,15 @@
           "order": 1,
           "filter": "",
           "headers": []
+        },
+        {
+          "id": "averageDaysTakenToCompleteInspection",
+          "name": "Average Days Taken to Complete Inspection",
+          "code": "",
+          "chartType": "metric",
+          "order": 1,
+          "filter": "",
+          "headers": []
         }      
       ],
       "visualizations": [
-- 
GitLab