예제 #1
0
        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);
        }