private WhatHappensNextApprenticeshipViewModel WhatHappensNextSuggestions(WhatHappensNextApprenticeshipViewModel whatHappensNextViewModel, Guid candidateId, int vacancyId, string searchReturnUrl) { var searchReturnViewModel = ApprenticeshipSearchViewModel.FromSearchUrl(searchReturnUrl) ?? new ApprenticeshipSearchViewModel { WithinDistance = 40, ResultsPerPage = 5, PageNumber = 1 }; var searchLocation = _apprenticeshipCandidateWebMappers.Map <ApprenticeshipSearchViewModel, Location>(searchReturnViewModel); var searchParameters = new ApprenticeshipSearchParameters { VacancyLocationType = ApprenticeshipLocationType.NonNational, ApprenticeshipLevel = searchReturnViewModel.ApprenticeshipLevel, SortType = VacancySearchSortType.Distance, Location = searchLocation, PageNumber = 1, PageSize = searchReturnViewModel.ResultsPerPage, SearchRadius = searchReturnViewModel.WithinDistance }; var suggestedVacancies = _candidateService.GetSuggestedApprenticeshipVacancies(searchParameters, candidateId, vacancyId); if (suggestedVacancies == null) { return(whatHappensNextViewModel); } var searchedCategory = (suggestedVacancies.SearchParameters.SubCategoryCodes != null && suggestedVacancies.SearchParameters.SubCategoryCodes.Length == 1 ? _referenceDataService.GetSubCategoryByCode(suggestedVacancies.SearchParameters.SubCategoryCodes[0]) : _referenceDataService.GetCategoryByCode(suggestedVacancies.SearchParameters.CategoryCode)) ?? Category.InvalidSectorSubjectAreaTier1; whatHappensNextViewModel.SuggestedVacanciesSearchViewModel = new ApprenticeshipSearchViewModel(suggestedVacancies.SearchParameters); whatHappensNextViewModel.SuggestedVacanciesCategory = searchedCategory.FullName; whatHappensNextViewModel.SuggestedVacanciesSearchDistance = suggestedVacancies.SearchParameters.SearchRadius; whatHappensNextViewModel.SuggestedVacanciesSearchLocation = suggestedVacancies.SearchParameters.Location.Name; whatHappensNextViewModel.SuggestedVacancies = suggestedVacancies.Results.Select(x => new SuggestedVacancyViewModel { VacancyId = x.Id, VacancyTitle = x.Title, IsPositiveAboutDisability = x.IsPositiveAboutDisability, Distance = Math.Round(x.Distance, 1, MidpointRounding.AwayFromZero).ToString(CultureInfo.InvariantCulture) }).ToList(); return(whatHappensNextViewModel); }
public void FromSearchUrlParseTests( ApprenticeshipLevel apprenticeshipLevel, string keywords, double latitude, double longitude, string location, ApprenticeshipLocationType locationType, int pageNumber, SearchAction searchAction, string searchField, ApprenticeshipSearchMode searchMode, VacancySearchSortType searchSortType, int withinDistance, string category, string[] subCategories, string url) { var searchViewModel = ApprenticeshipSearchViewModel.FromSearchUrl(url); searchViewModel.Should().NotBeNull(); searchViewModel.ApprenticeshipLevel.Should().Be(apprenticeshipLevel.ToString()); searchViewModel.Keywords.Should().Be(keywords); searchViewModel.Latitude.Should().Be(latitude); searchViewModel.Longitude.Should().Be(longitude); searchViewModel.Location.Should().Be(location); searchViewModel.LocationType.Should().Be(locationType); searchViewModel.PageNumber.Should().Be(1); searchViewModel.ResultsPerPage.Should().Be(5); searchViewModel.SearchAction.Should().Be(searchAction); searchViewModel.SearchField.Should().Be(searchField); searchViewModel.SearchMode.Should().Be(searchMode); searchViewModel.SortType.Should().Be(searchSortType); searchViewModel.WithinDistance.Should().Be(withinDistance); searchViewModel.Category.Should().Be(category); searchViewModel.SubCategories.ShouldAllBeEquivalentTo(subCategories); }