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 TraineeshipSearchResponseViewModel FindVacancies(TraineeshipSearchViewModel search) { _logger.Debug("Calling SearchProvider to find traineeship vacancies."); var searchLocation = _traineeshipSearchMapper.Map <TraineeshipSearchViewModel, Location>(search); try { var searchRequest = new TraineeshipSearchParameters { Location = searchLocation, PageNumber = search.PageNumber, PageSize = search.ResultsPerPage, SearchRadius = search.WithinDistance, SortType = search.SortType, }; var searchResults = _traineeshipSearchService.Search(searchRequest); 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; } }