public ActionResult Index(DataFilterModel dataFilter) { if (dataFilter.DateStart == DateTime.MinValue || dataFilter.DateStart == null) { dataFilter.DateStart = DateTime.Now.AddDays(-5); } if (dataFilter.DateEnd == DateTime.MinValue || dataFilter.DateEnd == null) { dataFilter.DateEnd = DateTime.Now; } DateTime dt1 = (DateTime)dataFilter.DateStart; DateTime dt2 = (DateTime)dataFilter.DateEnd; var glasses = _repo.GetGlassesWithOrder() .Where(g => g.TimeStamp >= dt1 && g.TimeStamp <= dt2) .OrderBy(g => g.TimeStamp); glassesViewModel.Glasses.Clear(); foreach (var item in glasses) { glassesViewModel.Glasses.Add(item); } glassesViewModel.DataFilter.DateStart = dt1; glassesViewModel.DataFilter.DateEnd = dt2; glassesViewModel.DataFilter.Count = glassesViewModel.Glasses.Count(); return(View(glassesViewModel)); }
public static List <T> ApplyFilter <T>(this DataFilterModel dataFilter, IEnumerable <T> items) where T : ITransaction { //var filters = dataFilter.BuildFilters(); //var filterExpression = dataFilter.BuildFilter<T>(); //return items.AsQueryable().Where(filterExpression).ToList(); return(!dataFilter.IsFilterApplied ? items.ToList() : items.Where(t => (string.IsNullOrEmpty(dataFilter.Description) || (!string.IsNullOrEmpty(t.Description) && t.Description.ToLower().Contains(dataFilter.Description.ToLower()))) && (string.IsNullOrEmpty(dataFilter.Remark) || (!string.IsNullOrEmpty(t.Remark) && t.Remark.ToLower().Contains(dataFilter.Remark.ToLower()))) && (dataFilter.TransactionType == null || t.TransactionType == dataFilter.TransactionType.Value) && (dataFilter.AllCategories || ((dataFilter.IncludeWithoutCategory && t.TransactionCategory == null) || (t.TransactionCategory != null && dataFilter.CategoryIds.Contains(t.TransactionCategory.Id)))) && (dataFilter.StorageIds.Count == 0 || t.TransactionStorageIds.Any(x => dataFilter.StorageIds.Contains(x)))) .ToList()); }
public static Func <T, bool> BuildFilter <T>(this DataFilterModel dataFilter) where T : ITransaction { var filterExpressions = new List <Expression <Func <T, bool> > >(); if (dataFilter.IsFilterApplied) { if (!string.IsNullOrEmpty(dataFilter.Description)) { filterExpressions.Add((t) => !string.IsNullOrEmpty(t.Description) && t.Description.ToLower().Contains(dataFilter.Description.ToLower())); } if (!string.IsNullOrEmpty(dataFilter.Remark)) { filterExpressions.Add((t) => !string.IsNullOrEmpty(t.Remark) && t.Remark.ToLower().Contains(dataFilter.Remark.ToLower())); } if (dataFilter.TransactionType.HasValue) { filterExpressions.Add((t) => t.TransactionType == dataFilter.TransactionType.Value); } if (dataFilter.CategoryIds.Count > 0) { filterExpressions.Add((t) => (dataFilter.IncludeWithoutCategory && t.TransactionCategory == null) || (t.TransactionCategory != null && dataFilter.CategoryIds.Contains(t.TransactionCategory.Id))); } if (dataFilter.StorageIds.Count > 0) { filterExpressions.Add((t) => t.TransactionStorageIds.Any(x => dataFilter.StorageIds.Contains(x))); } } return((filterExpressions.Count == 0 ? (T t) => true : filterExpressions.Combine()).Compile()); }
public static List <Func <ITransaction, bool> > BuildFilters(this DataFilterModel dataFilter) { var filters = new List <Func <ITransaction, bool> >(); if (dataFilter.IsFilterApplied) { if (!string.IsNullOrEmpty(dataFilter.Description)) { filters.Add((t) => !string.IsNullOrEmpty(t.Description) && t.Description.ToLower().Contains(dataFilter.Description.ToLower())); } if (!string.IsNullOrEmpty(dataFilter.Remark)) { filters.Add((t) => !string.IsNullOrEmpty(t.Remark) && t.Remark.Contains(dataFilter.Remark)); } if (dataFilter.TransactionType.HasValue) { filters.Add((t) => t.TransactionType == dataFilter.TransactionType.Value); } if (dataFilter.CategoryIds.Count > 0) { filters.Add((t) => (dataFilter.IncludeWithoutCategory && t.TransactionCategory == null) || (t.TransactionCategory != null && dataFilter.CategoryIds.Contains(t.TransactionCategory.Id))); } if (dataFilter.StorageIds.Count > 0) { filters.Add((t) => t.TransactionStorageIds.Any(x => dataFilter.StorageIds.Contains(x))); } } return(filters); }