Example #1
0
        private static async Task <SearchResult <IIndexEntity> > Search <T>(Models.DTO.Search search, string environment, IFilterManager fm, IAzureSearch <T> client, string minimumCriteria, string[] freetextFields)
            where T : class, IIndexEntity
        {
            fm.Init(search.SearchQuery.Filters);
            var selected = fm.GetSelectedFilters();
            var query    = search.SearchQuery.SearchTerm;

            if (IsAllDigits(query))
            {
                query = RemoveWhiteSpaces(query);
            }

            var filters = CreateAndFilter(selected, minimumCriteria);

            var result = await client.SearchWithFullResult(query, filters, true,
                                                           search.SearchParameters.OrderBy?.ToArray(), search.SearchParameters.NumberPerPage,
                                                           search.SearchParameters.GetSkipCount(),
                                                           searchFields : freetextFields);

            var resultObject = new SearchResult <IIndexEntity>()
            {
                SearchParameters = search.SearchParameters,
                Documents        = result.Results.Select(x => x.Document)
            };

            resultObject.SearchParameters.TotalCount = (int)result.Count;

            return(resultObject);
        }