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)); }
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)); }
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)); }
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); }
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)); }
// 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)); }
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)); }
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()); } }
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 }); }