private Func <QueryContainerDescriptor <T>, QueryContainer> CreateRangeForDuplicateField <T>(string propertyEntityName, string fieldName, IList <FilterCriteriaArgs> duplicateFields) where T : class { IDateRangeQuery DateRange(DateRangeQueryDescriptor <T> descriptor) { IDateRangeQuery dateRangeQuery = descriptor .Name(fieldName) .Field(fieldName) .Relation(RangeRelation.Within); foreach (var duplicateField in duplicateFields) { if (!(duplicateField.FilterValue is DateFilterValue dateFilterValue)) { continue; } CreateRangeDescriptor(duplicateField.Operator, descriptor, dateFilterValue); } return(dateRangeQuery); } return(CreateFilter <T>(propertyEntityName, DateRange)); }
public Func <QueryContainerDescriptor <T>, QueryContainer> ComposeFilter <T>(FilterCriteriaArgs args) where T : class { var fieldName = string.IsNullOrWhiteSpace(args.ParentPropertyName) ? args.PropertyName : $"{args.ParentPropertyName}.{args.PropertyName}"; if (!(args.FilterValue is DateFilterValue dateFilterValue)) { return(descriptor => descriptor); } if (args.Operator == OperatorType.Different) { return(DifferentOperatorFilter <T>(fieldName, args.ParentPropertyName, dateFilterValue.Value)); } IDateRangeQuery DateRange(DateRangeQueryDescriptor <T> descriptor) { IDateRangeQuery dateRangeQuery = descriptor .Name("") .Field(fieldName); CreateRangeDescriptor(args.Operator, descriptor, dateFilterValue); return(dateRangeQuery); } return(CreateFilter <T>(args.ParentPropertyName, DateRange)); }
private Func <QueryContainerDescriptor <T>, QueryContainer> CreateRangeGroupForDuplicateField <T>(string propertyEntityName, string fieldName, IEnumerable <FilterCriteriaArgs> duplicateOperatorFields) where T : class { ICollection <Func <QueryContainerDescriptor <T>, QueryContainer> > dateFilterQueries = new List <Func <QueryContainerDescriptor <T>, QueryContainer> >(); foreach (var duplicateField in duplicateOperatorFields) { if (!(duplicateField.FilterValue is DateFilterValue dateFilterValue)) { continue; } IDateRangeQuery DateRange(DateRangeQueryDescriptor <T> descriptor) { IDateRangeQuery numericRangeQuery = descriptor .Name($"{fieldName}.{dateFilterValue}") .Field(fieldName); CreateRangeDescriptor(duplicateField.Operator, descriptor, dateFilterValue); return(numericRangeQuery); } var dateFilter = CreateFilter <T>(propertyEntityName, DateRange); dateFilterQueries.Add(dateFilter); } QueryContainer Filter(QueryContainerDescriptor <T> q) => q.Bool(b => b.Should(dateFilterQueries)); return(Filter); }
internal static bool IsConditionless(IDateRangeQuery q) { return(q.Field.IsConditionless() || (q.GreaterThanOrEqualTo == null && q.LessThanOrEqualTo == null && q.GreaterThan == null && q.LessThan == null)); }
public virtual void Visit(IDateRangeQuery query) { }
internal static bool IsConditionless(IDateRangeQuery q) => q.Field.IsConditionless() || ((q.GreaterThanOrEqualTo == null || !q.GreaterThanOrEqualTo.IsValid) && (q.LessThanOrEqualTo == null || !q.LessThanOrEqualTo.IsValid) && (q.GreaterThan == null || !q.GreaterThan.IsValid) && (q.LessThan == null || !q.LessThan.IsValid));
public virtual void Visit(IDateRangeQuery query) => Write("date_range");
public void Visit(IDateRangeQuery query) => Write("date_range");
public virtual void Visit(IDateRangeQuery query) { }