public QueryStepBuilder <TSource, SearchModel> BeginSearch(params Type[] searchTypes)
        {
            var step = new QueryStepBuilder <TSource, SearchModel>(this);

            step.WithProperty(x => x.SearchText);
            step.AddStepBagItem(SearchConstants.QueryTypes, searchTypes);
            step.AddStepBagItem(SearchConstants.QueryName, _queryBuilder.QueryName);
            return(step);
        }
        /// <summary>
        /// Creates a new instance of SearchQueryBuilder.
        /// </summary>
        /// <typeparam name="TSource">Search source type.</typeparam>
        /// <param name="qb">QueryBuilder instance.</param>
        /// <returns>QueryStepBuilder.</returns>
        private static QueryStepBuilder <TSource, SearchModel> Create <TSource>(QueryParameterBuilder <TSource> qb)
        {
            var step = new QueryStepBuilder <TSource, SearchModel>(qb);

            step.DisableConnectionEdgeCheck();
            step.OverrideRepositoryTypeWith <SearchResult>();
            step.AddStepBagItem(SearchConstants.QueryName, qb.GetQueryBuilderQueryName());
            step.WithProperty(x => x.SearchText);
            step.AddQueryExecutionContextInterceptor(ctx =>
            {
                // This step is for backwards compatibility.
                var searchResults = ctx.GetQueryResults <SearchResult>();

                var list = new List <SearchResultModel>();

                searchResults.ForEach(sr => list.AddRange(sr.Values));

                ctx.SystemItems[typeof(SearchResult).FullName] = searchResults;

                ctx.SetQueryResult(list.Select(x => (object)x).ToList());
            });
            return(step);
        }
Esempio n. 3
0
 /// <summary>
 /// Constructor for SearchQueryBuilder.
 /// </summary>
 /// <param name="queryStepBuilder">QueryStepBuilder.</param>
 public SearchQueryBuilder(QueryStepBuilder <TSource, SearchModel> queryStepBuilder)
 {
     _queryStepBuilder = queryStepBuilder;
 }