コード例 #1
0
        public async Task <IActionResult> AddSearchResultsToCompare([FromQuery] SearchResultsQuery searchQuery, string orderBy = "relevance")
        {
            if (!searchQuery.TryValidateSearchParams(out HttpStatusViewResult result))
            {
                return(result);
            }

            // generate compare list
            var searchParams = SearchResultsQueryToEmployerSearchParameters(searchQuery);

            // set maximum search size
            searchParams.Page     = 1;
            searchParams.PageSize = CompareViewService.MaxCompareBasketCount;
            SearchViewModel searchResultsModel = await ViewingService.SearchAsync(searchParams, orderBy);

            // add any new items to the compare list
            string[] resultIds = searchResultsModel.Employers.Results
                                 .Where(employer => CompareViewService.BasketContains(employer.OrganisationIdEncrypted) == false)
                                 .Take(CompareViewService.MaxCompareBasketCount - CompareViewService.BasketItemCount)
                                 .Select(employer => employer.OrganisationIdEncrypted)
                                 .ToArray();

            CompareViewService.AddRangeToBasket(resultIds);

            // save the results to the cookie
            CompareViewService.SaveComparedEmployersToCookie(Request);

            return(RedirectToAction(nameof(SearchResults), "Viewing", searchQuery));
        }
コード例 #2
0
        public async Task <IActionResult> SearchResults([FromQuery] SearchResultsQuery searchQuery, string orderBy = "relevance")
        {
            //When never searched in this session
            if (string.IsNullOrWhiteSpace(SearchViewService.LastSearchParameters))
            {
                //If no compare employers in session then load employers from the cookie
                if (CompareViewService.BasketItemCount == 0)
                {
                    CompareViewService.LoadComparedEmployersFromCookie();
                }
            }

            //Clear the default back url of the employer hub pages
            EmployerBackUrl = null;
            ReportBackUrl   = null;

            // ensure parameters are valid
            if (!searchQuery.TryValidateSearchParams(out HttpStatusViewResult result))
            {
                return(result);
            }

            // generate result view model
            var             searchParams = SearchResultsQueryToEmployerSearchParameters(searchQuery);
            SearchViewModel model        = await ViewingService.SearchAsync(searchParams, orderBy);

            ViewBag.ReturnUrl = SearchViewService.GetLastSearchUrl();

            ViewBag.BasketViewModel = new CompareBasketViewModel {
                CanAddEmployers = false, CanViewCompare = CompareViewService.BasketItemCount > 1, CanClearCompare = true
            };

            return(View("Finder/SearchResults", model));
        }
コード例 #3
0
        public async Task <IActionResult> AddSearchResultsToCompare([FromQuery] SearchResultsQuery searchQuery)
        {
            if (!searchQuery.TryValidateSearchParams(out var result))
            {
                return(result);
            }

            // generate compare list
            var searchParams = AutoMapper.Map <EmployerSearchParameters>(searchQuery);

            // set maximum search size
            searchParams.Page     = 1;
            searchParams.PageSize = ComparePresenter.MaxCompareBasketCount;
            var searchResultsModel = await ViewingPresenter.SearchAsync(searchParams);

            // add any new items to the compare list
            var resultIds = searchResultsModel.Employers.Results
                            .Where(employer => ComparePresenter.BasketContains(employer.OrganisationIdEncrypted) == false)
                            .Take(ComparePresenter.MaxCompareBasketCount - ComparePresenter.BasketItemCount)
                            .Select(employer => employer.OrganisationIdEncrypted)
                            .ToArray();

            ComparePresenter.AddRangeToBasket(resultIds);

            // save the results to the cookie
            ComparePresenter.SaveComparedEmployersToCookie(Request);

            return(RedirectToAction(nameof(SearchResults), searchQuery));
        }
コード例 #4
0
        public async Task ViewingController_SearchResults_GET_Returns_Finder_SearchResults_view()
        {
            // Arrange
            var mockRouteData = new RouteData();

            mockRouteData.Values.Add("Action", "SearchResults");
            mockRouteData.Values.Add("Controller", "Viewing");

            var controller = UiTestHelper.GetController <ViewingController>(0, mockRouteData);

            var searchText = "search text";
            var sectorType = SearchTypes.BySectorType;
            // Test
            var query = new SearchResultsQuery {
                search = searchText, t = sectorType, p = 1
            };
            var result = await controller.SearchResults(query) as ViewResult;

            // Assert
            Assert.NotNull(result);
            Assert.AreEqual("Finder/SearchResults", result.ViewName);
            var model = result.Model as SearchViewModel;

            Assert.NotNull(model);
            Assert.AreEqual(query.search, model.search);
            Assert.AreEqual(query.p, model.p);
        }
コード例 #5
0
        public async Task <IActionResult> SearchResults([FromQuery] SearchResultsQuery searchQuery)
        {
            //Ensure search service is enabled
            if (ViewingService.SearchBusinessLogic.EmployerSearchRepository.Disabled)
            {
                return(View("CustomError",
                            WebService.ErrorViewModelFactory.Create(1151, new { featureName = "Search Service" })));
            }

            //When never searched in this session
            if (string.IsNullOrWhiteSpace(SearchPresenter.LastSearchParameters))
            {
                //If no compare employers in session then load employers from the cookie
                if (ComparePresenter.BasketItemCount == 0)
                {
                    ComparePresenter.LoadComparedEmployersFromCookie();
                }
            }

            //Clear the default back url of the employer hub pages
            EmployerBackUrl = null;
            ReportBackUrl   = null;

            // ensure parameters are valid
            if (!searchQuery.TryValidateSearchParams(out var result))
            {
                return(result);
            }

            // generate result view model
            var searchParams = AutoMapper.Map <EmployerSearchParameters>(searchQuery);
            var model        = await ViewingPresenter.SearchAsync(searchParams);

            ViewBag.ReturnUrl = SearchPresenter.GetLastSearchUrl();

            ViewBag.BasketViewModel = new CompareBasketViewModel
            {
                CanAddEmployers = false, CanViewCompare = ComparePresenter.BasketItemCount > 1, CanClearCompare = true
            };

            return(View("Finder/SearchResults", model));
        }
コード例 #6
0
        // used to generate suggestions for the search on the landing page
        public async Task <IActionResult> SearchResultsJs([FromQuery] SearchResultsQuery searchQuery)
        {
            //Clear the default back url of the employer hub pages
            EmployerBackUrl = null;
            ReportBackUrl   = null;


            // ensure parameters are valid
            if (!searchQuery.TryValidateSearchParams(out HttpStatusViewResult result))
            {
                return(result);
            }

            // generate result view model
            var             searchParams = SearchResultsQueryToEmployerSearchParameters(searchQuery);
            SearchViewModel model        = await ViewingService.SearchAsync(searchParams, "relevance");

            ViewBag.ReturnUrl = SearchViewService.GetLastSearchUrl();

            return(PartialView("Finder/Parts/MainContent", model));
        }
コード例 #7
0
        public async Task <IActionResult> SearchResultsJs([FromQuery] SearchResultsQuery searchQuery)
        {
            //Clear the default back url of the employer hub pages
            EmployerBackUrl = null;
            ReportBackUrl   = null;


            // ensure parameters are valid
            if (!searchQuery.TryValidateSearchParams(out var result))
            {
                return(result);
            }

            // generate result view model
            var searchParams = AutoMapper.Map <EmployerSearchParameters>(searchQuery);
            var model        = await ViewingPresenter.SearchAsync(searchParams);

            ViewBag.ReturnUrl = SearchPresenter.GetLastSearchUrl();

            return(PartialView("Finder/Parts/MainContent", model));
        }
コード例 #8
0
        public async Task <IActionResult> Step1Task2([FromQuery] SearchResultsQuery searchQuery, string orderBy = "relevance")
        {
            if (FeatureFlagHelper.IsFeatureEnabled(FeatureFlag.ReportingStepByStep))
            {
                //When never searched in this session
                if (string.IsNullOrWhiteSpace(SearchViewService.LastSearchParameters))
                {
                    //If no compare employers in session then load employers from the cookie
                    if (CompareViewService.BasketItemCount == 0)
                    {
                        CompareViewService.LoadComparedEmployersFromCookie();
                    }
                }

                // ensure parameters are valid
                if (!searchQuery.TryValidateSearchParams(out HttpStatusViewResult result))
                {
                    return(result);
                }

                // generate result view model
                var             searchParams = SearchResultsQueryToEmployerSearchParameters(searchQuery);
                SearchViewModel model        = await ViewingService.SearchAsync(searchParams, orderBy);

                ViewBag.ReturnUrl = SearchViewService.GetLastSearchUrl();

                ViewBag.BasketViewModel = new CompareBasketViewModel {
                    CanAddEmployers = false, CanViewCompare = CompareViewService.BasketItemCount > 1, CanClearCompare = true
                };
                return(View("../ReportingStepByStep/Step1Task2", model));
            }
            else
            {
                return(new HttpNotFoundResult());
            }
        }
コード例 #9
0
 private EmployerSearchParameters SearchResultsQueryToEmployerSearchParameters(SearchResultsQuery searchQuery)
 {
     return(new EmployerSearchParameters
     {
         Keywords = searchQuery.search,
         Page = searchQuery.p,
         FilterSicSectionIds = searchQuery.s ?? new List <char>(),
         FilterEmployerSizes = searchQuery.es ?? new List <int>(),
         FilterReportedYears = searchQuery.y ?? new List <int>(),
         FilterReportingStatus = searchQuery.st ?? new List <int>(),
         SearchType = searchQuery.t
     });
 }