コード例 #1
0
        public PlanPurchaseFilter ParseFilter(string filters)
        {
            if (string.IsNullOrWhiteSpace(filters))
            {
                return(null);
            }
            var filterListString = filters.Split('_');
            var filterReturn     = new PlanPurchaseFilter();

            foreach (var filterString in filterListString)
            {
                var parse = filterString.Split('=');
                var key   = parse[0];
                var value = parse[1];
                switch (key.ToLower())
                {
                case "name":
                {
                    filterReturn.Name = value;
                    break;
                }

                case "from":
                {
                    DateTime date;
                    filterReturn.From = DateTime.TryParse(value, out date) ? date : (DateTime?)null;
                    break;
                }

                case "to":
                {
                    DateTime date;
                    filterReturn.To = DateTime.TryParse(value, out date) ? date : (DateTime?)null;
                    break;
                }
                }
            }
            return(filterReturn);
        }
コード例 #2
0
        public StaticPagedList <Purchase> GetList(PlanPurchaseFilter filter, SortModel sort, int page, int count)
        {
            var plans = _repository.TableNoTracking <Purchase>();

            #region Filter

            if (filter != null)
            {
                if (!string.IsNullOrWhiteSpace(filter.Name))
                {
                    plans = plans.Where(x => x.Name.Contains(filter.Name));
                }
                if (filter.From != null)
                {
                    plans = plans.Where(x => x.Date >= filter.From);
                }
                if (filter.To != null)
                {
                    plans = plans.Where(x => x.Date <= filter.To);
                }
            }

            #endregion

            var countElement = plans.Count();

            #region Order

            plans = sort != null
                ? plans.OrderBy($"{sort.Column} {sort.Order}").Skip(count * (page - 1)).Take(count)
                : plans.OrderByDescending(x => x.CreatedAt).Skip(count * (page - 1)).Take(count);

            #endregion


            return(new StaticPagedList <Purchase>(plans, page, count, countElement));
        }