public async Task <IActionResult> SearchProviders([FromBody] SearchRequestViewModel request) { Guard.ArgumentNotNull(request, nameof(request)); ProviderSearchResultViewModel result = await _providerSearchService.PerformSearch(request); if (result != null) { return(Ok(result)); } else { return(new StatusCodeResult(500)); } }
public async Task <ApiResponse <ProviderSearchResultViewModel> > GetProviderSearchResultsAsync(SearchRequestViewModel searchRequest) { ProviderSearchResultItemViewModel r1 = new ProviderSearchResultItemViewModel { Id = "1", Name = "Kings Norton Girls School", Upin = "119621", Ukprn = "10033247", Urn = "136590", EstablishmentNumber = "351369590", ProviderType = "Academy", ProviderSubType = "Academy", LocalAuthority = "Birmingham", DateOpened = default(DateTime) }; ProviderSearchResultItemViewModel r2 = new ProviderSearchResultItemViewModel { Id = "2", Name = "Cadbury Sixth Form College", Upin = "119621", Ukprn = "10033247", Urn = "136590", EstablishmentNumber = "351369590", ProviderType = "Academy", ProviderSubType = "Academy", LocalAuthority = "Birmingham", DateOpened = default(DateTime) }; ProviderSearchResultViewModel searchResults = new ProviderSearchResultViewModel() { Providers = new List <ProviderSearchResultItemViewModel> { r1, r2 }, CurrentPage = 1, EndItemNumber = 10, TotalResults = 10, StartItemNumber = 1, }; return(await Task.FromResult(new ApiResponse <ProviderSearchResultViewModel>(HttpStatusCode.OK, searchResults))); }
public async Task <IActionResult> OnGetAsync(int?pageNumber, string searchTerm) { SearchRequestViewModel searchRequest = new SearchRequestViewModel() { PageNumber = pageNumber, IncludeFacets = false, SearchTerm = searchTerm, }; SearchTerm = searchTerm; ProviderResults = await _providerSearchService.PerformSearch(searchRequest); if (ProviderResults == null) { return(new StatusCodeResult(500)); } return(Page()); }
public async Task SearchProviders_GivenResultsReturnedFromSearch_ReturnsOK() { // Arrange SearchRequestViewModel requestModel = new SearchRequestViewModel(); ProviderSearchResultViewModel results = new ProviderSearchResultViewModel(); IProviderSearchService searchService = CreateSearchService(); searchService .PerformSearch(Arg.Any <SearchRequestViewModel>()) .Returns(results); ProviderSearchController controller = CreateController(searchService); // Act IActionResult actionResult = await controller.SearchProviders(requestModel); // Asserts actionResult .Should() .BeOfType <OkObjectResult>(); }
public async Task OnGetAsync_GivenSearchResultsReturnsResults_ReturnsPage() { // Arrange IResultsApiClient resultsApiClient = CreateApiClient(); IProviderSearchService searchService = CreateSearchService(); ProviderSearchResultViewModel model = new ProviderSearchResultViewModel(); searchService .PerformSearch(Arg.Any <SearchRequestViewModel>()) .Returns(model); ViewProviderResultsPageModel pageModel = CreatePageModel(resultsApiClient, searchService); // Act IActionResult actionResult = await pageModel.OnGetAsync(1, string.Empty); // Assert actionResult .Should() .BeOfType <PageResult>(); }
public async Task <IActionResult> OnPostAsync(int?pageNumber, string searchTerm) { SearchRequestViewModel searchRequest = new SearchRequestViewModel() { PageNumber = pageNumber, SearchTerm = SearchTerm, IncludeFacets = true, }; SearchTerm = searchTerm; ProviderResults = await _providerSearchService.PerformSearch(searchRequest); // ApiResponse<ProviderSearchResultViewModel> apiResponse = await GetProviderSearchResultsAsync(searchRequest); // ProviderResults = apiResponse.Content; if (ProviderResults == null) { return(new StatusCodeResult(500)); } return(Page()); }
public async Task <ProviderSearchResultViewModel> GetSearchResults(string searchTerm) { var result = new ProviderSearchResultViewModel() { SearchTerm = searchTerm }; try { var data = await _httpClient.GetDataAsync($"{_apiBaseUrl}/search/{searchTerm}"); if (!string.IsNullOrEmpty(data)) { var providerItems = _serializationService.Deserialize <IEnumerable <ProviderDetail> >(data).ToList(); if (providerItems.Any()) { foreach (var item in providerItems) { foreach (var lastSubmission in item.ProviderLatestSubmissions) { lastSubmission.LastSubmittedDateUtc = _dateTimeProvider.ConvertUtcToUk(lastSubmission.LastSubmittedDateUtc); } } } result.ProvidersList = providerItems.ToList(); } } catch (Exception e) { _logger.LogError($"Error occured trying to get the provider search results fro search term : {HttpUtility.UrlEncode(searchTerm)}", e); } return(result); }
public async Task <ProviderSearchResultViewModel> PerformSearch(SearchRequestViewModel request) { SearchFilterRequest requestOptions = new SearchFilterRequest() { Page = 1, PageSize = 50, SearchTerm = request.SearchTerm, IncludeFacets = request.IncludeFacets, Filters = request.Filters, SearchMode = _featureToggle.IsSearchModeAllEnabled() ? SearchMode.All : SearchMode.Any }; if (request.PageNumber.HasValue && request.PageNumber.Value > 0) { requestOptions.Page = request.PageNumber.Value; } PagedResult <ProviderSearchResultItem> searchRequestResult = await _resultsClient.FindProviders(requestOptions); if (searchRequestResult == null) { _logger.Error("Find providers HTTP request failed"); return(null); } ProviderSearchResultViewModel result = new ProviderSearchResultViewModel { TotalResults = searchRequestResult.TotalItems, CurrentPage = searchRequestResult.PageNumber, }; List <SearchFacetViewModel> searchFacets = new List <SearchFacetViewModel>(); if (searchRequestResult.Facets != null) { foreach (SearchFacet facet in searchRequestResult.Facets) { searchFacets.Add(_mapper.Map <SearchFacetViewModel>(facet)); } } result.Facets = searchFacets.AsEnumerable(); List <ProviderSearchResultItemViewModel> itemResults = new List <ProviderSearchResultItemViewModel>(); foreach (ProviderSearchResultItem searchresult in searchRequestResult.Items) { itemResults.Add(_mapper.Map <ProviderSearchResultItemViewModel>(searchresult)); } result.Providers = itemResults.AsEnumerable(); if (result.TotalResults == 0) { result.StartItemNumber = 0; result.EndItemNumber = 0; } else { result.StartItemNumber = ((requestOptions.Page - 1) * requestOptions.PageSize) + 1; result.EndItemNumber = result.StartItemNumber + requestOptions.PageSize - 1; } if (result.EndItemNumber > searchRequestResult.TotalItems) { result.EndItemNumber = searchRequestResult.TotalItems; } result.PagerState = new PagerState(requestOptions.Page, searchRequestResult.TotalPages, 4); return(result); }