Ejemplo n.º 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);
        }
Ejemplo n.º 2
0
 public virtual async Task <SearchResult <IIndexEntity> > BusinessSearch([FromBody] Models.DTO.Search search, string environment)
 {
     return(await Search(search, environment, _businessFilterManager, _busIndex, _minimumCriteriaForBusiness, _freetextPropertiesForBusiness));
 }
Ejemplo n.º 3
0
 public virtual async Task <SearchResult <IIndexEntity> > PersonSearch([FromBody] Models.DTO.Search search, string environment)
 {
     return(await Search(search, environment, _personFilterManager, _personIndex, _minimumCriteriaForPerson, _freetextPropertiesForPerson));
 }