Exemple #1
0
        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));
        }