Exemple #1
0
        public JsonResult SessionAvgTimeByUserByModuleChartResult(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 <UserModuleDetails> userModuleDetails = dBEngine.GetUserModuleDetails(startDate, endDate, Convert.ToInt32(Session["LoginUserID"]));
            List <UserModuleInfo>    userModuleInfo    = dBEngine.GetUserModuleInfo(startDate, endDate, Convert.ToInt32(Session["LoginUserID"]));
            var chartInfo = new List <ChartResponseInformation>();

            var filteredResult = userModuleDetails.GroupBy(x => new { x.UserName, x.ModuleName }).Select(
                y => new UserModuleDetails
            {
                UserName      = y.Key.UserName,
                ModuleName    = y.Key.ModuleName,
                ActivityCount = y.Count()
            }).ToList();

            var chartOptions  = new ChartOptionInformation();
            var xAxisData     = new List <string>();
            var chartData     = new List <ChartResponseInformation>();
            var chartInfoData = new List <string>();

            var dResult = filteredResult.GroupBy(x => x.ModuleName).ToList();

            foreach (var moduleInfo in dResult)
            {
                chartData.Add(new ChartResponseInformation
                {
                    name = moduleInfo.Key,
                    data = filteredResult.Where(x => x.ModuleName == moduleInfo.Key).Select(x => x.ActivityCount.ToString()).ToArray()
                });
            }

            foreach (var userData in filteredResult.GroupBy(x => x.UserName).ToList())
            {
                if (!xAxisData.Any(x => x == userData.Key))
                {
                    xAxisData.Add(userData.Key);
                }
            }

            chartInfo    = chartData;
            chartOptions = new ChartOptionInformation
            {
                X_axisCategoryType = "category",
                X_axisCategories   = xAxisData.ToArray()
            };


            var result = new ChartResultResponse();

            if (reqObj.FilterByUserId != null && reqObj.FilterByUserId.Length > 0)
            {
                var seriesData           = new List <ChartResponseInformation>();
                var seriesCategoriesData = new List <string>();
                foreach (var userId in reqObj.FilterByUserId)
                {
                    var seriesDataIndex = Array.IndexOf(chartOptions.X_axisCategories, userId);

                    seriesData.Add(chartInfo[seriesDataIndex]);
                    seriesCategoriesData.Add(userId);
                }

                result = new ChartResultResponse()
                {
                    ChartInfo    = seriesData,
                    ChartOptions = new ChartOptionInformation
                    {
                        X_axisCategoryType = "category",
                        X_axisCategories   = seriesCategoriesData.ToArray()
                    }
                };
            }
            else
            {
                result = new ChartResultResponse()
                {
                    ChartInfo             = chartInfo,
                    ChartOptions          = chartOptions,
                    UserModuleInformation = userModuleInfo
                };
            }

            return(Json(result, JsonRequestBehavior.AllowGet));
        }