예제 #1
0
        //Get Data From Database By Passing name of table and other parameters
        public static PagedData <T> ListView(int PageSize, Func <T, object> orderByColumn, string filter = null, string orderBy = null, int orderByAsc = 1, int page = 1)
        {
            page     = page == 0 ? 1 : page;
            PageSize = PageSize == 0 ? 1 : PageSize;

            Dictionary <string, string> values = null;

            if (filter != null)
            {
                values = JsonConvert.DeserializeObject <Dictionary <string, string> >(filter);
            }

            DbSet <T>          dbSet;
            DS_CMS_DB_Entities dbContext = new DS_CMS_DB_Entities();

            dbSet = dbContext.Set <T>();
            IQueryable <T> query   = dbSet;
            var            listObj = new PagedData <T>();

            listObj.CurrentPage = page;
            if (filter != null)
            {
                query = QueryExtensions.Filter <T>(query, values);
            }
            var data = orderByColumn;

            if (orderBy != null)
            {
                data = QueryExtensions.GetOrderByExpression <T>(orderBy);
            }
            if (PageSize == 101)
            {
                if (orderByAsc == 1)
                {
                    listObj.Data = query.OrderBy(data).ToList();
                }
                else
                {
                    listObj.Data = query.OrderByDescending(data).ToList();
                }
            }
            else
            {
                if (orderByAsc == 1)
                {
                    listObj.Data = query.OrderBy(data).Skip(PageSize * (page - 1)).Take(PageSize).ToList();
                }
                else
                {
                    listObj.Data = query.OrderByDescending(data).Skip(PageSize * (page - 1)).Take(PageSize).ToList();
                }
            }
            listObj.NumberOfPages = Convert.ToInt32(Math.Ceiling((double)query.Count() / PageSize));
            return(listObj);
        }
예제 #2
0
        public static PagedData <T> ListView(int PageSize, Func <T, object> orderByColumn, Func <T, bool> filterCondition = null, string filter = null, string orderBy = null, int orderByAsc = 1, int page = 1)
        {
            page     = page == 0 ? 1 : page;
            PageSize = PageSize == 0 ? 1 : PageSize;

            Dictionary <string, string> values = null;

            if (filter != null)
            {
                values = JsonConvert.DeserializeObject <Dictionary <string, string> >(filter);
            }

            DbSet <T>          dbSet;
            DS_CMS_DB_Entities dbContext = new DS_CMS_DB_Entities();

            dbSet = dbContext.Set <T>();
            IQueryable <T> query   = dbSet;
            var            listObj = new PagedData <T>();

            listObj.CurrentPage = page;
            if (filter != null)
            {
                query = QueryExtensions.Filter <T>(query, values);
            }
            var data = orderByColumn;

            if (orderBy != null)
            {
                if (!orderBy.Contains("."))
                {
                    data = QueryExtensions.GetOrderByExpression <T>(orderBy);
                }
            }
            if (filterCondition != null)
            {
                query = query.Where(filterCondition).AsQueryable();
            }
            if (PageSize == 101)
            {
                if (orderByAsc == 1)
                {
                    listObj.Data = query.OrderBy(data).ToList();
                }
                else
                {
                    listObj.Data = query.OrderByDescending(data).ToList();
                }
            }
            else
            {
                if (orderByAsc == 1)
                {
                    if (orderBy != null && orderBy.Contains('.'))
                    {
                        Assembly assembly          = Assembly.GetAssembly(typeof(T));
                        Type     typeData          = typeof(T);
                        var      typeDataTemp      = typeData.GetProperties();
                        var      propertiesDetails = orderBy.Split('.');
                        Type     t = (dynamic)null;

                        for (int i = 0; i <= propertiesDetails.Length - 1; i++)
                        {
                            foreach (PropertyInfo prope in typeDataTemp)
                            {
                                if (prope.Name.ToLower() == propertiesDetails[i].ToLower() && prope.PropertyType.IsClass)
                                {
                                    if (assembly.GetType(((prope.PropertyType)).FullName) != null)
                                    {
                                        typeDataTemp = assembly.GetType(((prope.PropertyType)).FullName).GetProperties();
                                        break;
                                    }
                                }
                                else if (prope.Name.ToLower() == propertiesDetails[i].ToLower())
                                {
                                    t = prope.PropertyType;
                                }
                            }
                        }


                        try
                        {
                            if (t.Name.ToLower() == "boolean")
                            {
                                listObj.Data = query.OrderBy(QueryExtensions.GetExpression <T, bool>(orderBy)).Skip(PageSize * (page - 1)).Take(PageSize).ToList();
                            }
                            else if (t.GenericTypeArguments[0].Name.ToLower().Contains("datetime"))
                            {
                                listObj.Data = query.OrderBy(QueryExtensions.GetExpression <T, DateTime>(orderBy)).Skip(PageSize * (page - 1)).Take(PageSize).ToList();
                            }
                            else if (t.GenericTypeArguments[0].Name.ToLower().Contains("decimal"))
                            {
                                listObj.Data = query.OrderBy(QueryExtensions.GetExpression <T, decimal>(orderBy)).Skip(PageSize * (page - 1)).Take(PageSize).ToList();
                            }
                            else if (t.GenericTypeArguments[0].Name.ToLower().Contains("int64"))
                            {
                                listObj.Data = query.OrderBy(QueryExtensions.GetExpression <T, long>(orderBy)).Skip(PageSize * (page - 1)).Take(PageSize).ToList();
                            }
                            else if (t.GenericTypeArguments[0].Name.ToLower().Contains("int"))
                            {
                                listObj.Data = query.OrderBy(QueryExtensions.GetExpression <T, int>(orderBy)).Skip(PageSize * (page - 1)).Take(PageSize).ToList();
                            }
                        }
                        catch
                        {
                            listObj.Data = query.OrderBy(QueryExtensions.GetExpression <T, Object>(orderBy)).Skip(PageSize * (page - 1)).Take(PageSize).ToList();
                        }
                    }
                    else
                    {
                        listObj.Data = query.OrderBy(data).Skip(PageSize * (page - 1)).Take(PageSize).ToList();
                    }
                }
                else
                {
                    if (orderBy != null && orderBy.Contains('.'))
                    {
                        Assembly assembly          = Assembly.GetAssembly(typeof(T));
                        Type     typeData          = typeof(T);
                        var      typeDataTemp      = typeData.GetProperties();
                        var      propertiesDetails = orderBy.Split('.');
                        Type     t = (dynamic)null;

                        for (int i = 0; i <= propertiesDetails.Length - 1; i++)
                        {
                            foreach (PropertyInfo prope in typeDataTemp)
                            {
                                if (prope.Name.ToLower() == propertiesDetails[i].ToLower() && prope.PropertyType.IsClass)
                                {
                                    if (assembly.GetType(((prope.PropertyType)).FullName) != null)
                                    {
                                        typeDataTemp = assembly.GetType(((prope.PropertyType)).FullName).GetProperties();
                                    }
                                    break;
                                }
                                else if (prope.Name.ToLower() == propertiesDetails[i].ToLower())
                                {
                                    t = prope.PropertyType;
                                }
                            }
                        }


                        try
                        {
                            if (t.Name.ToLower() == "boolean")
                            {
                                listObj.Data = query.OrderByDescending(QueryExtensions.GetExpression <T, bool>(orderBy)).Skip(PageSize * (page - 1)).Take(PageSize).ToList();
                            }
                            else if (t.GenericTypeArguments[0].Name.ToLower().Contains("datetime"))
                            {
                                listObj.Data = query.OrderByDescending(QueryExtensions.GetExpression <T, DateTime>(orderBy)).Skip(PageSize * (page - 1)).Take(PageSize).ToList();
                            }
                            else if (t.GenericTypeArguments[0].Name.ToLower().Contains("decimal"))
                            {
                                listObj.Data = query.OrderByDescending(QueryExtensions.GetExpression <T, decimal>(orderBy)).Skip(PageSize * (page - 1)).Take(PageSize).ToList();
                            }
                            else if (t.GenericTypeArguments[0].Name.ToLower().Contains("int64"))
                            {
                                listObj.Data = query.OrderByDescending(QueryExtensions.GetExpression <T, long>(orderBy)).Skip(PageSize * (page - 1)).Take(PageSize).ToList();
                            }
                            else if (t.GenericTypeArguments[0].Name.ToLower().Contains("int"))
                            {
                                listObj.Data = query.OrderByDescending(QueryExtensions.GetExpression <T, int>(orderBy)).Skip(PageSize * (page - 1)).Take(PageSize).ToList();
                            }
                        }
                        catch
                        {
                            listObj.Data = query.OrderByDescending(QueryExtensions.GetExpression <T, Object>(orderBy)).Skip(PageSize * (page - 1)).Take(PageSize).ToList();
                        }
                    }
                    else
                    {
                        listObj.Data = query.OrderByDescending(data).Skip(PageSize * (page - 1)).Take(PageSize).ToList();
                    }
                }
            }
            listObj.NumberOfPages = Convert.ToInt32(Math.Ceiling((double)query.Count() / PageSize));
            return(listObj);
        }