private bool ProcessTraineeshipApplication(ApplicationStatusSummary applicationStatusSummary) { var traineeshipApplicationDetail = _traineeshipApplicationReadRepository.Get(applicationStatusSummary.LegacyApplicationId); if (traineeshipApplicationDetail == null && applicationStatusSummary.LegacyCandidateId != 0) { // in some cases the application can't be found using the application IDs so use legacy candidate and vacancy IDs var candidate = _candidateReadRepository.Get(applicationStatusSummary.LegacyCandidateId, false); if (candidate == null) { return(false); } traineeshipApplicationDetail = _traineeshipApplicationReadRepository.GetForCandidate(candidate.EntityId, applicationStatusSummary.LegacyVacancyId); } if (traineeshipApplicationDetail == null) { return(false); } _applicationStatusUpdateStrategy.Update(traineeshipApplicationDetail, applicationStatusSummary); return(true); }
public void Update(Candidate candidate, IEnumerable <ApplicationStatusSummary> applicationStatuses) { // For the specified candidate, update the application repo for any of the status updates // passed in (if they're different). foreach (var applicationStatusSummary in applicationStatuses) { var legacyVacancyId = applicationStatusSummary.LegacyVacancyId; // Try apprenticeships first, the majority should be apprenticeships var apprenticeshipApplication = _apprenticeshipApplicationReadRepository.GetForCandidate(candidate.EntityId, legacyVacancyId); if (apprenticeshipApplication != null) { if (apprenticeshipApplication.UpdateApprenticeshipApplicationDetail(applicationStatusSummary)) { _apprenticeshipApplicationWriteRepository.Save(apprenticeshipApplication); _applicationStatusChangedStrategy.Send(applicationStatusSummary); } return; } var traineeshipApplication = _traineeshipApplicationReadRepository.GetForCandidate(candidate.EntityId, legacyVacancyId); if (traineeshipApplication != null) { if (traineeshipApplication.UpdateTraineeshipApplicationDetail(applicationStatusSummary)) { _traineeshipApplicationWriteRepository.Save(traineeshipApplication); } return; } _logger.Warn("Unable to find apprenticeship or traineeship application with legacy ID \"{0}\".", applicationStatusSummary.LegacyApplicationId); } }
protected override bool DoHandle(User user, Candidate candidate) { Guid entityId; if (user == null) { //If user is null, the candidate should be deleted as an orphaned record entityId = candidate.EntityId; } else { entityId = user.EntityId; //A null candidate record means the user is orphaned and so should be deleted if (candidate != null) { if (user.Status != UserStatuses.PendingDeletion) { return(false); } if (!user.DateUpdated.HasValue) { return(false); } var housekeepingCyclesSinceDateUpdated = GetHousekeepingCyclesSince(user.DateUpdated.Value); if (housekeepingCyclesSinceDateUpdated < Configuration.HardDeleteAccountAfterCycles) { return(false); } } } var savedSearches = _savedSearchReadRepository.GetForCandidate(entityId); var apprenticeshipApplications = _apprenticeshipApplicationReadRepository.GetForCandidate(entityId); var traineeshipApplications = _traineeshipApplicationReadRepository.GetForCandidate(entityId); Audit(entityId, user, candidate, savedSearches, apprenticeshipApplications, traineeshipApplications); //These methods aren't transactional however the code can cope with missing entities and so will self heal over time in the unlikely event of partial failure DeleteApprenticeshipApplications(apprenticeshipApplications); DeleteTraineeshipApplications(traineeshipApplications); DeleteSavedSearches(savedSearches); DeleteCandidate(entityId); DeleteAuthentication(entityId); DeleteUser(entityId); _serviceBus.PublishMessage(new CandidateUserUpdate(entityId, CandidateUserUpdateType.Delete)); return(true); }
public TraineeshipApplicationDetail GetTraineeshipApplication(Guid candidateId, int vacancyId) { Condition.Requires(candidateId); _logger.Debug( "Calling CandidateService to get the apprenticeship application of the user with Id={0} to the vacancy with Id={1}.", candidateId, vacancyId); return(_traineeshipApplicationReadRepository.GetForCandidate(candidateId, vacancyId)); }
public void Update(Guid candidateId, int vacancyId, VacancyDetail vacancyDetail) { // Try apprenticeships first, the majority should be apprenticeships. // Note that it is possible for a candidate to have no application for this vacancy. var apprenticeshipApplication = _apprenticeshipApplicationReadRepository.GetForCandidate(candidateId, vacancyId); var updated = false; if (apprenticeshipApplication != null) { if (apprenticeshipApplication.VacancyStatus != vacancyDetail.VacancyStatus) { apprenticeshipApplication.VacancyStatus = vacancyDetail.VacancyStatus; updated = true; } if (apprenticeshipApplication.Vacancy.ClosingDate != vacancyDetail.ClosingDate) { apprenticeshipApplication.Vacancy.ClosingDate = vacancyDetail.ClosingDate; updated = true; } if (updated) { _apprenticeshipApplicationWriteRepository.Save(apprenticeshipApplication); } } else { var traineeshipApplication = _traineeshipApplicationReadRepository.GetForCandidate(candidateId, vacancyId); if (traineeshipApplication != null) { if (traineeshipApplication.VacancyStatus != vacancyDetail.VacancyStatus) { traineeshipApplication.VacancyStatus = vacancyDetail.VacancyStatus; updated = true; } if (traineeshipApplication.Vacancy.ClosingDate != vacancyDetail.ClosingDate) { traineeshipApplication.Vacancy.ClosingDate = vacancyDetail.ClosingDate; updated = true; } if (updated) { _traineeshipApplicationWriteRepository.Save(traineeshipApplication); } } } }
public IList <TraineeshipApplicationSummary> GetApplications(Guid candidateId) { return(_traineeshipApplicationReadRepository.GetForCandidate(candidateId)); }