public void TryGetVacancyReference(string value, bool expectParse, string expectedVacancyReference) { string vacancyReference; Assert.That(VacancyHelper.TryGetVacancyReference(value, out vacancyReference), Is.EqualTo(expectParse)); Assert.That(vacancyReference, Is.EqualTo(expectedVacancyReference)); }
public TraineeshipSearchResponseViewModel FindVacancies(TraineeshipSearchViewModel search) { _logger.Debug("Calling SearchProvider to find traineeship vacancies."); string vacancyReference; var searchLocation = _traineeshipSearchMapper.Map <TraineeshipSearchViewModel, Location>(search); var isVacancyReference = VacancyHelper.TryGetVacancyReference(search.ReferenceNumber, out vacancyReference); try { var searchRequest = new TraineeshipSearchParameters { Location = searchLocation, PageNumber = search.PageNumber, PageSize = search.ResultsPerPage, SearchRadius = search.WithinDistance, SortType = search.SortType }; if (isVacancyReference) { searchRequest.VacancyReference = vacancyReference; } var searchResults = _traineeshipSearchService.Search(searchRequest); if (searchResults.Total == 1) { var exactMatchResponse = _traineeshipSearchMapper.Map <SearchResults <TraineeshipSearchResponse, TraineeshipSearchParameters>, TraineeshipSearchResponseViewModel>(searchResults); exactMatchResponse.ExactMatchFound = true; return(exactMatchResponse); } if (searchResults.Total > 1) { _logger.Info($"{searchResults.Total} results found for Vacancy Reference Number {vacancyReference}"); } var searchResponse = _traineeshipSearchMapper.Map <SearchResults <TraineeshipSearchResponse, TraineeshipSearchParameters>, TraineeshipSearchResponseViewModel>( searchResults); searchResponse.TotalHits = searchResults.Total; searchResponse.PageSize = search.ResultsPerPage; searchResponse.VacancySearch = search; return(searchResponse); } catch (CustomException ex) { // ReSharper disable once FormatStringProblem _logger.Error("Find traineeship vacancies failed. Check inner details for more info", ex); return(new TraineeshipSearchResponseViewModel(VacancySearchResultsPageMessages.VacancySearchFailed)); } catch (Exception e) { _logger.Error("Find traineeship vacancies failed. Check inner details for more info", e); throw; } }
public MediatorResponse <TransferVacanciesResultsViewModel> GetVacancyDetails(TransferVacanciesViewModel viewModel) { try { var vacanciesToBeTransferred = new List <TransferVacancyViewModel>(); var transferVacanciesResultsViewModel = new TransferVacanciesResultsViewModel { TransferVacanciesViewModel = viewModel, NotFoundVacancyNumbers = new List <string>() }; if (viewModel != null && viewModel.VacancyReferenceNumbers.Any()) { foreach (var vacancy in viewModel.VacancyReferenceNumbers.Split(',')) { string vacancyReference; if (VacancyHelper.TryGetVacancyReference(vacancy, out vacancyReference)) { var vacancyDetails = _vacancyPostingService.GetVacancyByReferenceNumber(Convert.ToInt32(vacancyReference)); if (vacancyDetails != null) { var vacancyView = new TransferVacancyViewModel { ContractOwnerId = vacancyDetails.ContractOwnerId, VacancyManagerId = vacancyDetails.VacancyManagerId, VacancyReferenceNumber = vacancyDetails.VacancyReferenceNumber, DeliveryOrganisationId = vacancyDetails.DeliveryOrganisationId, VacancyOwnerRelationShipId = vacancyDetails.VacancyOwnerRelationshipId, ProviderName = _providerService.GetProvider(vacancyDetails.ContractOwnerId).TradingName, VacancyTitle = vacancyDetails.Title, EmployerName = vacancyDetails.EmployerName }; if (vacancyDetails.VacancyManagerId.HasValue) { vacancyView.ProviderSiteName = _providerService.GetProviderSite(vacancyDetails.VacancyManagerId.Value).TradingName; } vacanciesToBeTransferred.Add(vacancyView); } else { transferVacanciesResultsViewModel.NotFoundVacancyNumbers.Add(vacancy); } } } } transferVacanciesResultsViewModel.VacanciesToBeTransferredVm = vacanciesToBeTransferred; return(GetMediatorResponse(AdminMediatorCodes.GetVacancyDetails.Ok, transferVacanciesResultsViewModel)); } catch (CustomException exception) when(exception.Code == ErrorCodes.ProviderVacancyAuthorisation.Failed) { return(GetMediatorResponse(AdminMediatorCodes.GetVacancyDetails.FailedAuthorisation, new TransferVacanciesResultsViewModel(), TransferVacanciesMessages.UnAuthorisedAccess, UserMessageLevel.Warning)); } }
public ApprenticeshipSearchResponseViewModel FindVacancies(ApprenticeshipSearchViewModel search) { _logger.Debug("Calling SearchProvider to find apprenticeship vacancies."); var searchLocation = _apprenticeshipSearchMapper.Map <ApprenticeshipSearchViewModel, Location>(search); try { string vacancyReference; var isVacancyReference = VacancyHelper.TryGetVacancyReference(search.Keywords, out vacancyReference); if ((search.SearchField == ApprenticeshipSearchField.All.ToString() && isVacancyReference) || search.SearchField == ApprenticeshipSearchField.ReferenceNumber.ToString()) { if (isVacancyReference) { var searchParameters = new ApprenticeshipSearchParameters { VacancyReference = vacancyReference, PageNumber = 1, PageSize = 1 }; var searchResults = _apprenticeshipSearchService.Search(searchParameters); //Expect only a single result. Any other number should be interpreted as no results if (searchResults.Total == 1) { var exactMatchResponse = _apprenticeshipSearchMapper.Map <SearchResults <ApprenticeshipSearchResponse, ApprenticeshipSearchParameters>, ApprenticeshipSearchResponseViewModel>(searchResults); exactMatchResponse.ExactMatchFound = true; return(exactMatchResponse); } if (searchResults.Total > 1) { _logger.Info("{0} results found for Vacancy Reference Number {1} parsed from {2}. Expected 0 or 1", searchResults.Total, vacancyReference, search.Keywords); } } var response = new ApprenticeshipSearchResponseViewModel { Vacancies = new List <ApprenticeshipVacancySummaryViewModel>(), VacancySearch = search }; return(response); } var results = ProcessNationalAndNonNationalSearches(search, searchLocation); var nationalResults = results[ResultsKeys.National]; var nonNationalResults = results[ResultsKeys.NonNational]; var unfilteredResults = results[ResultsKeys.Unfiltered]; var nationalResponse = _apprenticeshipSearchMapper.Map <SearchResults <ApprenticeshipSearchResponse, ApprenticeshipSearchParameters>, ApprenticeshipSearchResponseViewModel>(nationalResults); nationalResponse.VacancySearch = search; var nonNationalResponse = _apprenticeshipSearchMapper.Map <SearchResults <ApprenticeshipSearchResponse, ApprenticeshipSearchParameters>, ApprenticeshipSearchResponseViewModel>(nonNationalResults); nonNationalResponse.VacancySearch = search; if (search.LocationType == ApprenticeshipLocationType.NonNational) { nonNationalResponse.TotalLocalHits = nonNationalResults.Total; nonNationalResponse.TotalNationalHits = nationalResults.Total; nonNationalResponse.PageSize = search.ResultsPerPage; if (nonNationalResults.Total == 0 && nationalResults.Total > 0) { nonNationalResponse.Vacancies = nationalResponse.Vacancies; var vacancySearch = nonNationalResponse.VacancySearch; if (vacancySearch.SearchAction == SearchAction.Search || vacancySearch.SortType == VacancySearchSortType.Distance) { vacancySearch.SortType = string.IsNullOrWhiteSpace(vacancySearch.Keywords) ? VacancySearchSortType.ClosingDate : VacancySearchSortType.Relevancy; } vacancySearch.LocationType = ApprenticeshipLocationType.National; SetAggregationResults(nonNationalResponse, nationalResults.AggregationResults, unfilteredResults.AggregationResults); } else { SetAggregationResults(nonNationalResponse, nonNationalResults.AggregationResults, unfilteredResults.AggregationResults); } return(nonNationalResponse); } nationalResponse.TotalLocalHits = nonNationalResults.Total; nationalResponse.TotalNationalHits = nationalResults.Total; nationalResponse.PageSize = search.ResultsPerPage; if (nationalResults.Total == 0 && nonNationalResults.Total > 0) { nationalResponse.Vacancies = nonNationalResponse.Vacancies; SetAggregationResults(nonNationalResponse, nonNationalResults.AggregationResults, unfilteredResults.AggregationResults); } else { SetAggregationResults(nonNationalResponse, nationalResults.AggregationResults, unfilteredResults.AggregationResults); } return(nationalResponse); } catch (CustomException ex) { _logger.Error("Find apprenticeship vacancies failed. Check inner details for more info", ex); return(new ApprenticeshipSearchResponseViewModel(VacancySearchResultsPageMessages.VacancySearchFailed)); } catch (Exception e) { _logger.Error("Find apprenticeship vacancies failed. Check inner details for more info", e); throw; } }