public static List <T> ApplyOrders <T>(this List <T> list, StoreRequestParams parameters)
        {
            //if (!string.IsNullOrEmpty(parameters.SimpleSort))
            //    list = list.OrderBy(parameters.SimpleSort + " " + parameters.SimpleSortDirection);

            return(list);
        }
        public static IQueryable <T> ApplyFilters <T>(this IQueryable <T> data, StoreRequestParams parameters)
        {
            if (parameters.GridFilters != null)
            {
                foreach (FilterCondition f in parameters.GridFilters.Conditions)
                {
                    var p = typeof(T).GetProperty(f.Field);
                    if (typeof(T).GetProperty(f.Field) == null)
                    {
                        continue;
                    }

                    String typeName = p.PropertyType.Name.ToLower();
                    if (typeName == "string")
                    {
                        data = data.Where(String.Format("{0}.Contains(@0)", f.Field), f.Value <String>());
                    }

                    if (typeName == "int32")
                    {
                        data = data.Where(String.Format("{0} = @0", f.Field), f.Value <Int32>());
                    }

                    if (typeName == "double")
                    {
                        data = data.Where(String.Format("{0} = @0", f.Field), f.Value <Double>());
                    }

                    if (typeName == "byte")
                    {
                        data = data.Where(String.Format("{0} = @0", f.Field), f.Value <Byte>());
                    }

                    if (typeName == "datetime")
                    {
                        switch (f.Comparison)
                        {
                        case Comparison.Lt:
                            data = data.Where(f.Field + " <= @0", f.Value <DateTime>());
                            break;

                        case Comparison.Gt:
                            data = data.Where(f.Field + " >= @0", f.Value <DateTime>());
                            break;

                        case Comparison.Eq:
                            data = data.Where(f.Field + " = @0", f.Value <DateTime>());
                            break;

                        default:
                            data = data.Where(f.Field + " = @0", f.Value <DateTime>());
                            break;
                        }
                    }
                }
            }

            return(data);
        }
 public static IQueryable <T> ApplyOrders <T>(this IQueryable <T> data, StoreRequestParams parameters)
 {
     if (!string.IsNullOrEmpty(parameters.SimpleSort) && typeof(T).GetProperty(parameters.SimpleSort) != null)
     {
         data = data.OrderBy(parameters.SimpleSort + " " + parameters.SimpleSortDirection);
     }
     return(data);
 }
 public static IQueryable <T> ApplyPaging <T>(this IQueryable <T> data, StoreRequestParams parameters)
 {
     if (parameters.Start >= 0 && parameters.Limit > 0)
     {
         return(data.Skip(parameters.Start).Take(parameters.Limit));
     }
     return(data);
 }
 public static IQueryable <T> ApplyStoreFiltering <T>(this IQueryable <T> data, StoreRequestParams parameters)
 {
     return(data.ApplyOrders(parameters).ApplyFilters(parameters).ApplyPaging(parameters));
 }
 public static List <T> ApplyPaging <T>(this List <T> list, StoreRequestParams parameters)
 {
     return(list.GetRange(parameters.Start < list.Count() ? parameters.Start : 0, parameters.Limit < list.Count() ? parameters.Limit : list.Count()));
 }
        public static List <T> ApplyFilters <T>(this List <T> list, StoreRequestParams parameters)
        {
            if (parameters.GridFilters != null)
            {
                foreach (FilterCondition f in parameters.GridFilters.Conditions)
                {
                    PropertyInfo p = typeof(T).GetProperty(f.Field);
                    if (typeof(T).GetProperty(f.Field) == null)
                    {
                        continue;
                    }

                    String typeName = p.PropertyType.Name.ToLower();
                    if (typeName == "string")
                    {
                        Func <T, bool> where =
                            s => ((string)s.GetType().GetProperty(f.Field).GetValue(s, null)).Contains(f.Value <String>());

                        list = list.Where(where).ToList();
                    }
                    if (typeName == "int32")
                    {
                        Func <T, bool> where =
                            s => (int)s.GetType().GetProperty(f.Field).GetValue(s, null) == f.Value <Int32>();

                        list = list.Where(where).ToList();
                    }
                    if (typeName == "double")
                    {
                        Func <T, bool> where =
                            s => (double)s.GetType().GetProperty(f.Field).GetValue(s, null) == f.Value <Double>();

                        list = list.Where(where).ToList();
                    }
                    if (typeName == "byte")
                    {
                        Func <T, bool> where =
                            s => (byte)s.GetType().GetProperty(f.Field).GetValue(s, null) == f.Value <Byte>();

                        list = list.Where(where).ToList();
                    }
                    if (typeName == "datetime")
                    {
                        Func <T, bool> where;
                        switch (f.Comparison)
                        {
                        case Comparison.Lt:
                            where =
                                s => (DateTime)s.GetType().GetProperty(f.Field).GetValue(s, null) <= f.Value <DateTime>();
                            break;

                        case Comparison.Gt:
                            where =
                                s => (DateTime)s.GetType().GetProperty(f.Field).GetValue(s, null) >= f.Value <DateTime>();
                            break;

                        default:
                            where =
                                s => (DateTime)s.GetType().GetProperty(f.Field).GetValue(s, null) == f.Value <DateTime>();
                            break;
                        }
                        list = list.Where(where).ToList();
                    }
                    if (typeName == "ienumerable`1")
                    {
                        Func <T, bool> where =
                            s => ((IEnumerable <int>)s.GetType().GetProperty(f.Field).GetValue(s, null)).Contains(f.Value <Int32>());

                        list = list.Where(where).ToList();
                    }
                }
            }

            return(list);
        }
 public static List <T> ApplyStoreFiltering <T>(this List <T> list, StoreRequestParams parameters)
 {
     return(list.ApplyOrders(parameters).ApplyFilters(parameters).ApplyPaging(parameters));
 }
 public static Paging <T> ToStoreResult <T>(this IEnumerable <T> data, StoreRequestParams parameters)
 {
     return(ToStoreResult(data.AsQueryable(), parameters));
 }