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); }