コード例 #1
0
        /// <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));
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        protected override IQueryable <T> Filter(IQueryable <T> sourceQuery, TableColumnFilter filter)
        {
            var filterExpression = filter.NumericRange.GetIntegerFilterExpression();

            return(sourceQuery.Where(EntityLambdaExpression().Chain(filterExpression)));
        }
コード例 #4
0
        protected override IQueryable <T> Filter(IQueryable <T> sourceQuery, TableColumnFilter filter)
        {
            var filterExpression = filter.Boolean.GetFilterExpression();

            return(sourceQuery.Where(EntityLambdaExpression().Chain(filterExpression)));
        }
コード例 #5
0
        protected override IQueryable <T> Filter(IQueryable <T> sourceQuery, TableColumnFilter filter)
        {
            var filterEnumList = filter.MultiselectText.StringValues;

            return(sourceQuery.Where(EntityLambdaExpression().Chain(tenum => filterEnumList.Contains(tenum))));
        }
コード例 #6
0
 protected abstract IQueryable <T> Filter(IQueryable <T> sourceQuery, TableColumnFilter filter);