/// <summary> /// When implemented in a derived class, applies a filter to a specified query using a criterion on the derived column type./// </summary> /// <param name="sourceQuery">Product offers list query</param> /// <param name="filter">Column filter parameter</param> /// <returns>A new query, based on sourceQuery, that applies a filter that might reduce the number of rows returned to those that match a criterion specified in the derived column type.</returns> public IQueryable <T> ApplyFilter(IQueryable <T> sourceQuery, TableColumnFilter filter) { switch (FilterStrategy) { case TableColumnFilterStrategy.FreeText: if (filter.FilterFreeText == null) { throw new ArgumentException("Free text must have filter text"); } break; case TableColumnFilterStrategy.MultiSelection: if (filter.MultiselectText == null) { throw new ArgumentException("Multi selection must have filter text"); } break; case TableColumnFilterStrategy.Flag: if (filter.Boolean == null) { throw new ArgumentException("Flag must have filter boolean"); } break; case TableColumnFilterStrategy.NumericRange: if (filter.NumericRange == null) { throw new ArgumentException("Numeric Range must have numeric filter"); } break; case TableColumnFilterStrategy.DateRange: if (filter.FilterDateRange == null) { throw new ArgumentException("Date range must have DateRange filter"); } break; default: break; } return(Filter(sourceQuery, filter)); }
public void GetProducts_Should_FilterName(string nameToFilter) { var allTableColumns = _productTableColumnRepository.GetAllViewColumns(); var nameTableColumn = allTableColumns.FirstOrDefault( tc => tc.Identifier.AdditionalData.Contains("Name")); nameTableColumn.ShouldNotBeNull(); var nameIdentifier = nameTableColumn.Identifier; var nameAvedaFilter = new TableColumnFilter { FilterFreeText = new FilterFreeText { StringValue = nameToFilter, Type = FilterFreeTextType.Contains }, ColumnIdentifier = nameIdentifier }; var pageNumber = 1; var pageSize = 10; var tableInput = new TableInput { Filters = new List <TableColumnFilter> { nameAvedaFilter }, PageNumber = pageNumber, PageSize = pageSize }; var tableOutput = _productService.GetProducts(tableInput); tableOutput.Rows.Count.ShouldBe(1); var avedaRow = tableOutput.Rows.First(); avedaRow.Cells[0].ShouldBe(nameToFilter); }
protected override IQueryable <T> Filter(IQueryable <T> sourceQuery, TableColumnFilter filter) { var filterExpression = filter.NumericRange.GetIntegerFilterExpression(); return(sourceQuery.Where(EntityLambdaExpression().Chain(filterExpression))); }
protected override IQueryable <T> Filter(IQueryable <T> sourceQuery, TableColumnFilter filter) { var filterExpression = filter.Boolean.GetFilterExpression(); return(sourceQuery.Where(EntityLambdaExpression().Chain(filterExpression))); }
protected override IQueryable <T> Filter(IQueryable <T> sourceQuery, TableColumnFilter filter) { var filterEnumList = filter.MultiselectText.StringValues; return(sourceQuery.Where(EntityLambdaExpression().Chain(tenum => filterEnumList.Contains(tenum)))); }
protected abstract IQueryable <T> Filter(IQueryable <T> sourceQuery, TableColumnFilter filter);