public void CategoryMappingTest() { const ApprenticeshipSearchMode searchMode = ApprenticeshipSearchMode.Category; const string keywords = "chef"; const string location = "Warwick"; const int withinDistance = 15; const string apprenticeshipLevel = "Advanced"; const string category = "MFP"; var subCategories = new[] { "513", "540" }; const string searchField = "JobTitle"; var savedSearch = new SavedSearchBuilder() .WithSearchMode(searchMode) .WithKeywords(keywords) .WithLocation(location) .WithinDistance(withinDistance) .WithApprenticeshipLevel(apprenticeshipLevel) .WithCategory(category) .WithSubCategories(subCategories) .WithSearchField(searchField) .Build(); var parameters = SearchParametersFactory.Create(savedSearch); parameters.Should().NotBeNull(); parameters.Keywords.Should().BeNullOrEmpty(); parameters.Location.Should().NotBeNull(); parameters.Location.Name.Should().Be(location); parameters.SearchRadius.Should().Be(withinDistance); parameters.ApprenticeshipLevel.Should().Be(apprenticeshipLevel); parameters.CategoryCode.Should().Be(category); parameters.SubCategoryCodes.Should().BeEquivalentTo(subCategories); parameters.SearchField.Should().Be(ApprenticeshipSearchField.All); }
public void LatLongTest() { var savedSearch = new SavedSearchBuilder().WithLatLong(1.1, 2.1).Build(); var parameters = SearchParametersFactory.Create(savedSearch); parameters.Location.Should().NotBeNull(); parameters.Location.GeoPoint.Should().NotBeNull(); parameters.Location.GeoPoint.Latitude.Should().Be(1.1); parameters.Location.GeoPoint.Longitude.Should().Be(2.1); }
public void DefaultsTest() { var savedSearch = new SavedSearchBuilder().Build(); var parameters = SearchParametersFactory.Create(savedSearch); parameters.Should().NotBeNull(); parameters.PageSize.Should().Be(5); parameters.PageNumber.Should().Be(1); parameters.SortType.Should().Be(VacancySearchSortType.RecentlyAdded); parameters.VacancyLocationType.Should().Be(ApprenticeshipLocationType.NonNational); }
public void ProcessCandidateSavedSearches(CandidateSavedSearches candidateSavedSearches) { var candidateId = candidateSavedSearches.CandidateId; var user = _userReadRepository.Get(candidateId); if (!user.IsActive()) { return; } var candidate = _candidateReadRepository.Get(candidateId); if (!candidate.ShouldSendSavedSearchAlerts()) { return; } var savedSearches = _savedSearchReadRepository.GetForCandidate(candidateId); if (savedSearches == null || !savedSearches.Any(s => s.AlertsEnabled)) { return; } foreach (var savedSearch in savedSearches) { if (!HasGeoLocation(savedSearch)) { continue; } var searchParameters = SearchParametersFactory.Create(savedSearch); var searchResults = _vacancySearchProvider.FindVacancies(searchParameters); var results = searchResults.Results.ToList(); if (results.Count == 0) { _logService.Info("Saved search with id {0} returned no results", savedSearch.EntityId); continue; } var resultsHash = results.GetResultsHash(); if (savedSearch.LastResultsHash != resultsHash) { _logService.Info("Saved search with id {0} returned new results", savedSearch.EntityId); //Results are new savedSearch.LastResultsHash = resultsHash; //todo: once we have the vacancy posted date (March 2015) we may store this instead of the processed date savedSearch.DateProcessed = DateTime.UtcNow; if (savedSearch.AlertsEnabled) { var savedSearchAlert = _savedSearchAlertRepository.GetUnsentSavedSearchAlert(savedSearch) ?? new SavedSearchAlert { Parameters = savedSearch }; savedSearchAlert.Results = results; _savedSearchAlertRepository.Save(savedSearchAlert); } _savedSearchWriteRepository.Save(savedSearch); } } }