public virtual async Task <IHttpActionResult> AutoComplete(AutoCompleteSearchViewModel request, int limit = MAXIMUM_AUTOCOMPLETE_RESULT) { var originalSearchTerms = request.Query.Trim(); var searchTerms = SearchTermsTransformationProvider.TransformSearchTerm(originalSearchTerms, ComposerContext.CultureInfo.Name); var searchCriteria = await BaseSearchCriteriaProvider.GetSearchCriteriaAsync(searchTerms, RequestUtils.GetBaseUrl(Request).ToString(), false).ConfigureAwait(false); searchCriteria.NumberOfItemsPerPage = limit; var searchResultsViewModel = await SearchViewService.GetSearchViewModelAsync(searchCriteria).ConfigureAwait(false); if (searchResultsViewModel.ProductSearchResults?.TotalCount == 0 && originalSearchTerms != searchTerms) { searchCriteria.Keywords = originalSearchTerms; searchResultsViewModel = await SearchViewService.GetSearchViewModelAsync(searchCriteria).ConfigureAwait(false); } var vm = new AutoCompleteViewModel() { Suggestions = new List <ProductSearchViewModel>() }; if (searchResultsViewModel.ProductSearchResults?.SearchResults?.Count > 0) { vm.Suggestions = searchResultsViewModel.ProductSearchResults.SearchResults.Take(limit) .Select(p => { p.SearchTerm = searchTerms; return(p); }) .ToList(); } return(Ok(vm)); }
public virtual async Task <IHttpActionResult> AutoComplete(AutoCompleteSearchViewModel request, int limit = MAXIMUM_AUTOCOMPLETE_RESULT) { var originalSearchTerms = request.Query.Trim(); var searchTerms = SearchTermsTransformationProvider.TransformSearchTerm(originalSearchTerms, ComposerContext.CultureInfo.Name);; var searchCriteria = new SearchCriteria { Keywords = searchTerms, NumberOfItemsPerPage = limit, IncludeFacets = false, StartingIndex = 0, SortBy = "score", SortDirection = "desc", Page = 1, BaseUrl = RequestUtils.GetBaseUrl(Request).ToString(), Scope = ComposerContext.Scope, CultureInfo = ComposerContext.CultureInfo, InventoryLocationIds = await InventoryLocationProvider.GetInventoryLocationIdsForSearchAsync().ConfigureAwait(false), }; var searchResultsViewModel = await SearchViewService.GetSearchViewModelAsync(searchCriteria).ConfigureAwait(false); if (searchResultsViewModel.ProductSearchResults?.TotalCount == 0 && originalSearchTerms != searchTerms) { searchCriteria.Keywords = originalSearchTerms; searchResultsViewModel = await SearchViewService.GetSearchViewModelAsync(searchCriteria).ConfigureAwait(false); } var vm = new AutoCompleteViewModel() { Suggestions = new List <ProductSearchViewModel>() }; if (searchResultsViewModel.ProductSearchResults?.SearchResults?.Count > 0) { vm.Suggestions = searchResultsViewModel.ProductSearchResults.SearchResults.Take(limit) .Select(p => { p.SearchTerm = searchTerms; return(p); }) .ToList(); } return(Ok(vm)); }