예제 #1
0
        public async Task <IActionResult> OnGetAsync(int?pageIndex = null, int?offset = null)
        {
            if (!ModelState.IsValid || SearchKeyword.IsNullOrEmpty())
            {
                return(Page());
            }

            _paginationParameters = new PaginationParametersBase
            {
                PageSize  = 20,
                PageIndex = pageIndex ?? 1,
                Offset    = offset ?? 0
            };

            var searchKeywords = SearchStringHelper.GetSearchKeywords(SearchKeyword);

            var usersToDisplay = await _userSearchService.OrderQueryableAsync(searchKeywords);

            var regionsToDisplay = await _referenceDataRepository.GetPhecsBySearchKeywords(searchKeywords);

            var tbServicesToDisplay = await _referenceDataRepository.GetActiveTBServicesBySearchKeywords(searchKeywords);

            var hospitalsToDisplay = await _referenceDataRepository.GetActiveHospitalsBySearchKeywords(searchKeywords);

            var(paginatedResults, count) =
                _serviceDirectoryService.GetPaginatedItems(
                    regionsToDisplay,
                    usersToDisplay,
                    tbServicesToDisplay,
                    hospitalsToDisplay,
                    _paginationParameters);

            DirectorySearchResults = new PaginatedList <ServiceDirectoryItemWrapper>(paginatedResults, count, _paginationParameters);

            AllPhecs = await _referenceDataRepository.GetAllPhecs();

            if (DirectorySearchResults.HasNextPage)
            {
                NextPageUrl = QueryHelpers.AddQueryString("/ServiceDirectory/SearchResults",
                                                          new Dictionary <string, string>
                {
                    { "SearchKeyword", SearchKeyword },
                    { "pageIndex", (_paginationParameters.PageIndex + 1).ToString() },
                    { "offset", (_paginationParameters.Offset + paginatedResults.Count).ToString() }
                });
            }

            if (DirectorySearchResults.HasPreviousPage)
            {
                PreviousPageUrl = QueryHelpers.AddQueryString("/ServiceDirectory/SearchResults",
                                                              new Dictionary <string, string>
                {
                    { "SearchKeyword", SearchKeyword },
                    { "pageIndex", (_paginationParameters.PageIndex - 1).ToString() },
                    { "offset", (_paginationParameters.Offset - _paginationParameters.PageSize).ToString() }
                });
            }

            PrepareBreadcrumbs();

            return(Page());
        }
        public async Task OrderQueryableAsync_ReturnsEmptyList()
        {
            // Arrange
            var searchStrings = SearchStringHelper.GetSearchKeywords("");

            _mockReferenceDataRepository.Setup(r => r.GetAllPhecs()).ReturnsAsync(new List <PHEC>());
            _mockUserRepository.Setup(u => u.GetOrderedUsers()).ReturnsAsync(new List <User>());

            // Act
            var results = await _service.OrderQueryableAsync(searchStrings);

            // Assert
            Assert.Empty(results);
        }