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);
            }
        }
示例#2
0
        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);
            }
        }
示例#7
0
        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);
            }
        }
示例#8
0
        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();
        }