Example #1
0
        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));
            }
        }
Example #2
0
        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)));
        }
Example #3
0
        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());
        }
Example #4
0
        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>();
        }
Example #5
0
        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>();
        }
Example #6
0
        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());
        }
Example #7
0
        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);
        }
Example #8
0
        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);
        }