public void Construct(ApplicationFieldDefinition field, DataMap dataMap, Action <Result> onCompletion, IEnumerable <FilterExpression> adHocFilters) { if (field == null) { throw new ArgumentNullException("field"); } if (dataMap == null) { throw new ArgumentNullException("dataMap"); } if (onCompletion == null) { throw new ArgumentNullException("onCompletion"); } if (adHocFilters == null) { throw new ArgumentNullException("adHocFilters"); } _field = field; _widget = (LookupWidget)field.Widget(); _dataMap = dataMap; _onCompletion = onCompletion; _filters = InitializeFilters(_dataMap, _widget, adHocFilters); }
public Result(ApplicationFieldDefinition field, LookupWidget widget, DataMap dataMap) { _field = field; _widget = widget; _dataMap = dataMap; }
private static IEnumerable <FilterExpression> InitializeFilters(DataMap dataMap, LookupWidget widget, IEnumerable <FilterExpression> adHocFilters) { var filters = new List <FilterExpression>(); // Handles the metadata filters, which // can be either literals ("hardcoded") // or based on the data map current state. foreach (var filter in widget.Filters) { var value = string.IsNullOrEmpty(filter.Literal) ? dataMap.Value(filter.TargetField) : filter.Literal; filters.Add(new Exactly(filter.SourceField, value)); } // Now let's append all ad-hoc filter. filters.AddRange(adHocFilters); return(filters); }