private dynamic dbList(ref int totalRecordCount) { //bool initGrid = Request.Query["type"].ToString() == "initGrid" ? true : false; //bool exportGrid = Request.Query["type"].ToString() == "exportGrid" ? true : false; //bool isUtil = Request.Query["subtype"].ToString() == "isUtil" ? true : false; string remoteIP = this.HttpContext.Connection.RemoteIpAddress.ToString(); string localIP = this.HttpContext.Connection.LocalIpAddress.ToString(); string src = Request.Query["src"].ToString(); string page = Request.Query["page"].ToString(); string start = Request.Query["start"].ToString(); string limit = Request.Query["limit"].ToString(); DashboardModel dashboardModel = new DashboardModel() { SaxeobaList = new List <SaxeobaModel>(), PieDataList = new List <PieDataModel>(), ActivityList = new List <ActivityModel> (), EntityList = new List <EntityModel>(), PieColorList = new List <PieColorModel>() }; try { using (SqlConnection sqlConnection = new SqlConnection( GIxUtils.DecodeConnectionString( _configuration, ref _loginRequest, Request.Headers["X-WebGI-Authentication"], Request.Headers["X-WebGI-Version"]))) { sqlConnection.Open(); using (SqlCommand sqlCommand = sqlConnection.CreateCommand()) { sqlCommand.Connection = sqlConnection; sqlCommand.CommandType = CommandType.StoredProcedure; sqlCommand.CommandText = "dbo.[usp_WebGI_GetDashboard]"; //sqlCommand.Parameters.AddWithValue("@APIKey", apiKey); sqlCommand.Parameters.AddWithValue("@IP_Local", localIP); sqlCommand.Parameters.AddWithValue("@IP_Remote", remoteIP); sqlCommand.Parameters.AddWithValue("@Src", src); //sqlCommand.Parameters.AddWithValue("@InitGrid", initGrid); //sqlCommand.Parameters.AddWithValue("@ExportGrid", exportGrid); sqlCommand.Parameters.AddWithValue("@Salt", _loginRequest.salt); sqlCommand.Parameters.AddWithValue("@Version", _loginRequest.version); sqlCommand.Parameters.AddWithValue("@page", page); sqlCommand.Parameters.AddWithValue("@start", start); sqlCommand.Parameters.AddWithValue("@limit", limit); //sqlCommand.Parameters.AddWithValue("@utilityFilter", Request.Query["query"].ToString()); // when typing in dropdown //sqlCommand.Parameters.AddWithValue("@sort", Request.Query["sort"].ToString()); //sqlCommand.Parameters.AddWithValue("@userDescription", Request.Query["userDescription"].ToString()); //sqlCommand.Parameters.AddWithValue("@userCode", Request.Query["userCode"].ToString()); //SqlParameter outputValue = sqlCommand.Parameters.Add("@totalCount", SqlDbType.Int); //outputValue.Direction = ParameterDirection.Output; SqlDataReader recordSet = sqlCommand.ExecuteReader(); using (recordSet) { object value; // 1. SaxeobaList while (recordSet.Read()) { dynamic model = new SaxeobaModel(); var properties = model.GetType().GetProperties(); foreach (var el in properties) { string name = el.Name; value = recordSet[recordSet.GetOrdinal(name)]; if (value != System.DBNull.Value) { switch (el.PropertyType.Name) { case "Int32": el.SetValue(model, (int)value); break; case "String": el.SetValue(model, (string)value); break; case "Boolean": el.SetValue(model, (bool)value); break; case "Decimal": el.SetValue(model, (decimal)value); break; case "DateTime": el.SetValue(model, (DateTime)value); break; } } } dashboardModel.SaxeobaList.Add(model); } // 2. PieChartData recordSet.NextResult(); while (recordSet.Read()) { dynamic model = new PieDataModel(); var properties = model.GetType().GetProperties(); foreach (var el in properties) { string name = el.Name; value = recordSet[recordSet.GetOrdinal(name)]; if (value != System.DBNull.Value) { switch (el.PropertyType.Name) { case "Int32": el.SetValue(model, (int)value); break; case "String": el.SetValue(model, (string)value); break; case "Boolean": el.SetValue(model, (bool)value); break; case "Decimal": el.SetValue(model, (decimal)value); break; case "DateTime": el.SetValue(model, (DateTime)value); break; } } } dashboardModel.PieDataList.Add(model); } // 3. ActivityData recordSet.NextResult(); while (recordSet.Read()) { dynamic model = new ActivityModel(); var properties = model.GetType().GetProperties(); foreach (var el in properties) { string name = el.Name; value = recordSet[recordSet.GetOrdinal(name)]; if (value != System.DBNull.Value) { switch (el.PropertyType.Name) { case "Int32": el.SetValue(model, (int)value); break; case "String": el.SetValue(model, (string)value); break; case "Boolean": el.SetValue(model, (bool)value); break; case "Decimal": el.SetValue(model, (decimal)value); break; case "DateTime": el.SetValue(model, (DateTime)value); break; } } } dashboardModel.ActivityList.Add(model); } // 4. Entity recordSet.NextResult(); while (recordSet.Read()) { dynamic model = new EntityModel(); var properties = model.GetType().GetProperties(); foreach (var el in properties) { string name = el.Name; value = recordSet[recordSet.GetOrdinal(name)]; if (value != System.DBNull.Value) { switch (el.PropertyType.Name) { case "Int32": el.SetValue(model, (int)value); break; case "String": el.SetValue(model, (string)value); break; case "Boolean": el.SetValue(model, (bool)value); break; case "Decimal": el.SetValue(model, (decimal)value); break; case "DateTime": el.SetValue(model, (DateTime)value); break; } } } dashboardModel.EntityList.Add(model); } // 4. Entity recordSet.NextResult(); while (recordSet.Read()) { dynamic model = new PieColorModel(); var properties = model.GetType().GetProperties(); foreach (var el in properties) { string name = el.Name; value = recordSet[recordSet.GetOrdinal(name)]; if (value != System.DBNull.Value) { switch (el.PropertyType.Name) { case "Int32": el.SetValue(model, (int)value); break; case "String": el.SetValue(model, (string)value); break; case "Boolean": el.SetValue(model, (bool)value); break; case "Decimal": el.SetValue(model, (decimal)value); break; case "DateTime": el.SetValue(model, (DateTime)value); break; } } } dashboardModel.PieColorList.Add(model); } recordSet.Close(); recordSet.Dispose(); } } sqlConnection.Close(); sqlConnection.Dispose(); } } catch (Exception ex) { GIxUtils.Log(ex); throw new Exception(ex.Message); } return(dashboardModel); }