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); }
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)); }