public TVacancyDetail GetVacancyDetails(Guid candidateId, int vacancyId) { _logger.Debug("Calling LegacyGetCandidateVacancyDetailStrategy to get vacancy details for vacancy ID {0} and candidate ID {1}.", vacancyId, candidateId); try { var vacancyDetails = _vacancyDataProvider.GetVacancyDetails(vacancyId); if (vacancyDetails != null) { // update the application for this candidate (if they have one) with latest info from legacy _applicationVacancyUpdater.Update(candidateId, vacancyId, vacancyDetails); // propagate the current vacancy status for other consumers var vacancyStatusSummary = new VacancyStatusSummary { LegacyVacancyId = vacancyId, VacancyStatus = vacancyDetails.VacancyStatus, ClosingDate = vacancyDetails.ClosingDate }; _bus.PublishMessage(vacancyStatusSummary); } return(vacancyDetails); } catch (Exception e) { var message = string.Format("Get vacancy failed for vacancy ID {0} and candidate ID {1}.", vacancyId, candidateId); _logger.Debug(message, e); throw new CustomException(message, e, ErrorCodes.GetVacancyDetailsFailed); } }
public void Run() { try { var summaries = _vacancyIndexDataProvider.GetVacancySummaries(1); var apprenticeshipSummaries = summaries as IList <ApprenticeshipSummary> ?? summaries.ApprenticeshipSummaries; var traineeshipSummaries = summaries as IList <TraineeshipSummary> ?? summaries.TraineeshipSummaries; var summary = apprenticeshipSummaries.ToList().FirstOrDefault(); if (summary != null) { var apprenticeshipDetail = _vacancyDataProvider.GetVacancyDetails(summary.Id); } else { _logger.Error("Monitor get vacancy summary returned {0} records", apprenticeshipSummaries.Count() + traineeshipSummaries.Count()); } } catch (Exception exception) { _logger.Error("Error connecting to NAS Gateway vacancy index", exception); } }
public SearchResults <ApprenticeshipSearchResponse, ApprenticeshipSearchParameters> GetSuggestedApprenticeshipVacancies( ApprenticeshipSearchParameters searchParameters, IList <ApprenticeshipApplicationSummary> candidateApplications, int vacancyId) { var vacancy = _vacancyDataProvider.GetVacancyDetails(vacancyId); var vacancySubCategory = _referenceDataService.GetSubCategoryByName(vacancy.SubCategory); if (vacancySubCategory == null) { return(null); } searchParameters.CategoryCode = vacancySubCategory.ParentCategoryCodeName; searchParameters.SubCategoryCodes = new[] { vacancySubCategory.CodeName }; var excludeVacancyIds = candidateApplications.Select(x => x.LegacyVacancyId).ToList(); excludeVacancyIds.Add(vacancyId); searchParameters.ExcludeVacancyIds = excludeVacancyIds; if (searchParameters.Location != null) { if (searchParameters.Location.GeoPoint == null || (searchParameters.Location.GeoPoint.Latitude == 0 && searchParameters.Location.GeoPoint.Longitude == 0)) { var locations = _locationSearchService.FindLocation(searchParameters.Location.Name); searchParameters.Location = locations != null?locations.FirstOrDefault() : null; } } if (searchParameters.Location == null) { searchParameters.Location = new Location { Name = vacancy.VacancyAddress.Postcode, GeoPoint = new GeoPoint { Latitude = vacancy.VacancyAddress.GeoPoint.Latitude, Longitude = vacancy.VacancyAddress.GeoPoint.Longitude, } }; } var searchResults = _searchService.Search(searchParameters); if (searchResults.Total == 0) { //Widen search to category alone searchParameters.SubCategoryCodes = null; searchResults = _searchService.Search(searchParameters); } return(searchResults); }
public TraineeshipApplicationDetail CreateApplication(Guid candidateId, int vacancyId) { var vacancyDetails = _vacancyDataProvider.GetVacancyDetails(vacancyId); if (vacancyDetails == null) { return(null); } var candidate = _candidateReadRepository.Get(candidateId); var applicationDetail = CreateApplicationDetail(candidate, vacancyDetails); return(applicationDetail); }
public void Send(Guid candidateId, IEnumerable <CommunicationToken> tokens) { var candidate = _candidateReadRepository.Get(candidateId); var application = GetApplication(tokens); var vacancy = _vacancyDataProvider.GetVacancyDetails(application.Vacancy.Id, true); var applicationTokens = new[] { new CommunicationToken(CommunicationTokens.CandidateFirstName, candidate.RegistrationDetails.FirstName), new CommunicationToken(CommunicationTokens.ApplicationVacancyTitle, vacancy.Title), new CommunicationToken(CommunicationTokens.ApplicationVacancyReference, vacancy.VacancyReference) }; _sendCandidateCommunicationStrategy.Send(candidateId, MessageTypes.ApprenticeshipApplicationSubmitted, applicationTokens); }
public TVacancyDetail GetVacancyDetails(int vacancyId) { Condition.Requires(vacancyId); _logger.Debug("Calling VacancyDataProvider to get vacancy details for vacancy {0}.", vacancyId); try { return(_vacancyDataProvider.GetVacancyDetails(vacancyId)); } catch (Exception e) { var message = $"Get vacancy failed for vacancy {vacancyId}."; _logger.Debug(message, e); throw new CustomException(message, e, ErrorCodes.GetVacancyDetailsFailed); } }
public TVacancyDetail GetVacancyDetails(Guid candidateId, int vacancyId) { _logger.Debug("Calling LegacyGetCandidateVacancyDetailStrategy to get vacancy details for vacancy ID {0} and candidate ID {1}.", vacancyId, candidateId); try { var vacancyDetails = _vacancyDataProvider.GetVacancyDetails(vacancyId); return(vacancyDetails); } catch (Exception e) { var message = string.Format("Get vacancy failed for vacancy ID {0} and candidate ID {1}.", vacancyId, candidateId); _logger.Debug(message, e); throw new CustomException(message, e, ErrorCodes.GetVacancyDetailsFailed); } }
private ApprenticeshipApplicationDetail CreateNewApplication(Guid candidateId, int vacancyId) { var vacancyDetails = _vacancyDataProvider.GetVacancyDetails(vacancyId); if (vacancyDetails == null) { return(null); } var candidate = _candidateReadRepository.Get(candidateId); var applicationDetail = CreateApplicationDetail(candidate, vacancyDetails); if (vacancyDetails.ApplyViaEmployerWebsite) { return(applicationDetail); } _apprenticeshipApplicationWriteRepository.Save(applicationDetail); return(applicationDetail); }
private ApprenticeshipApplicationDetail CreateNewApplication(Guid candidateId, int vacancyId, bool saveVacancy = false) { var vacancyDetails = _vacancyDataProvider.GetVacancyDetails(vacancyId); if (vacancyDetails == null) { return(null); } var candidate = _candidateReadRepository.Get(candidateId); var applicationTemplate = saveVacancy ? null : new ApplicationTemplate { EducationHistory = candidate.ApplicationTemplate.EducationHistory, Qualifications = candidate.ApplicationTemplate.Qualifications, WorkExperience = candidate.ApplicationTemplate.WorkExperience, TrainingCourses = candidate.ApplicationTemplate.TrainingCourses, AboutYou = candidate.ApplicationTemplate.AboutYou, DisabilityStatus = candidate.MonitoringInformation.DisabilityStatus }; var applicationStatus = saveVacancy ? ApplicationStatuses.Saved : ApplicationStatuses.Draft; var applicationDetail = CreateApplicationDetail(candidate, vacancyDetails, applicationStatus, applicationTemplate); if (vacancyDetails.ApplyViaEmployerWebsite && !saveVacancy) { return(applicationDetail); } _apprenticeshipApplicationWriteRepository.Save(applicationDetail); _serviceBus.PublishMessage(new ApprenticeshipApplicationUpdate(applicationDetail.EntityId, ApplicationUpdateType.Create)); return(applicationDetail); }
public TVacancyDetail GetVacancyDetails(int vacancyId, bool errorIfNotFound) { _logger.Debug("Calling GetVacancyDetails for VacancyId: {0}", vacancyId); return(_cacheService.Get(VacancyDataCacheKey, vacancyId1 => _vacancyDataProvider.GetVacancyDetails(vacancyId1, errorIfNotFound), vacancyId)); }
public void ShouldNotReturnVacancyDetailsForInvalidVacancyId() { var result = _vacancyDataProvider.GetVacancyDetails(123456789); result.Should().BeNull(); }