public static OperatorDescriptorBase CreateFilterGroupBody(SearchFilterGroupDescriptor descriptor, string searchText) { if (descriptor?.Filters?.Any() != true) { throw new ArgumentException($"{nameof(descriptor.Filters)}: A0AA4935-06AB-47AA-BDD1-B3FCBBF2EFC0"); } if (descriptor.Filters.Count > 2) { throw new ArgumentException($"{nameof(descriptor.Filters)}: FA8286BD-AA2D-4AB8-9FFD-CC171C98607C"); } return(descriptor.Filters.Count == 2 ? new OrBinaryOperatorDescriptor { Left = CreateBody(descriptor.Filters.First()), Right = CreateBody(descriptor.Filters.Last()) } : CreateBody(descriptor.Filters.First())); OperatorDescriptorBase CreateBody(SearchFilterDescriptorBase filterDescriptorBase) => filterDescriptorBase is SearchFilterDescriptor searchFilterDescriptor ? CreateFilterBody(searchFilterDescriptor, searchText) : CreateFilterGroupBody((SearchFilterGroupDescriptor)filterDescriptorBase, searchText); }
public static FilterLambdaOperatorDescriptor CreateFilter(SearchFilterGroupDescriptor descriptor, Type modelType, string searchText) => new FilterLambdaOperatorDescriptor { FilterBody = CreateFilterGroupBody(descriptor, searchText), ParameterName = parameterName, SourceElementType = modelType.AssemblyQualifiedName };
private static OperatorDescriptorBase CreateWhereBody(SearchFilterGroupDescriptor filterGroupDescriptor, string searchText) => new WhereOperatorDescriptor { SourceOperand = new ParameterOperatorDescriptor { ParameterName = queryParameterName }, FilterBody = CreateSearchFilterHelper.CreateFilterGroupBody(filterGroupDescriptor, searchText), FilterParameterName = filterParameterName };
public SelectorLambdaOperatorDescriptor CreatePagingSelector(SortCollectionDescriptor sortDescriptor, Type modelType, SearchFilterGroupDescriptor filterGroupDescriptor, string searchText) => CreatePagingSelectorHelper.CreatePagingSelector(sortDescriptor, modelType, filterGroupDescriptor, searchText);
public FilterLambdaOperatorDescriptor CreateFilter(SearchFilterGroupDescriptor descriptor, Type modelType, string searchText) => CreateSearchFilterHelper.CreateFilter(descriptor, modelType, searchText);
public static SelectorLambdaOperatorDescriptor CreatePagingSelector(SortCollectionDescriptor sortDescriptor, Type modelType, SearchFilterGroupDescriptor filterGroupDescriptor, string searchText) => string.IsNullOrEmpty(searchText) ? CreatePagingSelector(sortDescriptor, modelType) : GetSelector ( modelType.GetIQueryableTypeString(), sortDescriptor, CreateWhereBody(filterGroupDescriptor, searchText) );