public JsonResult SessionChartResult(ChartLoadRequestObject reqObj) { DateTime startDate = string.IsNullOrEmpty(reqObj.StartDate) ? System.DateTime.Now.AddDays(-365) : DateTime.ParseExact(reqObj.StartDate, "dd/MM/yyyy", CultureInfo.InvariantCulture); DateTime endDate = string.IsNullOrEmpty(reqObj.EndDate) ? System.DateTime.Now : DateTime.ParseExact(reqObj.EndDate, "dd/MM/yyyy", CultureInfo.InvariantCulture); string connectionString = ConfigurationManager.ConnectionStrings["NHSConStr"].ConnectionString; DBEngine dBEngine = new DBEngine(connectionString); List <UserCount> users = dBEngine.GetActiveUsers(startDate, endDate, Convert.ToInt32(Session["LoginUserID"])); List <UserSessionCount> userSessionCount = dBEngine.GetUsersSessionCount(startDate, endDate, Convert.ToInt32(Session["LoginUserID"])); var filteredUserCount = users.GroupBy(x => x.UserName) .Select(x => new UserCount { UserName = x.Key, ActivityCount = x.Sum(y => y.ActivityCount) }).ToList(); var stringUserActivityCounter = new List <string>(); var stringUsers = new List <string>(); var userActivityInfo = new Dictionary <string, string>(); foreach (var user in filteredUserCount) { stringUsers.Add(user.UserName); stringUserActivityCounter.Add(user.ActivityCount.ToString()); userActivityInfo.Add(user.UserName, user.ActivityCount.ToString()); } var chartInfo = new List <ChartResponseInformation>(); var chartOptions = new ChartOptionInformation(); chartInfo = new List <ChartResponseInformation> { new ChartResponseInformation { name = "", data = stringUserActivityCounter.ToArray() } }; chartOptions = new ChartOptionInformation { X_axisCategoryType = "category", X_axisCategories = stringUsers.ToArray() }; var result = new ChartResultResponse(); if (reqObj.FilterByUserId != null && reqObj.FilterByUserId.Length > 0) { var seriesDataArray = new List <string>(); var categoriesDataArray = new List <string>(); foreach (var userId in reqObj.FilterByUserId) { if (!string.IsNullOrEmpty(userId)) { seriesDataArray.Add(userActivityInfo.FirstOrDefault(x => x.Key == userId).Value); categoriesDataArray.Add(userId); } } result = new ChartResultResponse() { ChartInfo = chartInfo.Select(x => new ChartResponseInformation { name = x.name, titile = x.titile, data = seriesDataArray.ToArray() }), ChartOptions = new ChartOptionInformation() { X_axisCategoryType = chartOptions.X_axisCategoryType, X_axisCategories = categoriesDataArray.ToArray() } }; } else { result = new ChartResultResponse() { ChartInfo = chartInfo, ChartOptions = chartOptions, UserSessionCountInformation = userSessionCount }; } return(Json(result, JsonRequestBehavior.AllowGet)); }