private ApprenticeshipApplicationDetail UnarchiveApplication(ApprenticeshipApplicationDetail apprenticeshipApplicationDetail) { apprenticeshipApplicationDetail.IsArchived = false; _apprenticeshipApplicationWriteRepository.Save(apprenticeshipApplicationDetail); return(_apprenticeshipApplicationReadRepository.Get(apprenticeshipApplicationDetail.EntityId)); }
public void SetStateInProgress(Guid applicationId) { var application = _apprenticeshipApplicationReadRepository.Get(applicationId); application.SetStateInProgress(); _apprenticeshipApplicationWriteRepository.Save(application); _serviceBus.PublishMessage(new ApprenticeshipApplicationUpdate(applicationId, ApplicationUpdateType.Update)); }
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); } }
public ApprenticeshipApplicationDetail CreateDraft(Guid candidateId, int vacancyId) { var applicationDetail = _apprenticeshipApplicationReadRepository.GetForCandidate(candidateId, vacancyId); if (applicationDetail == null) { return(null); } if (applicationDetail.Status != ApplicationStatuses.Saved) { return(null); } var candidateDetail = _candidateReadRespository.Get(candidateId); if (candidateDetail == null) { return(null); } // Only actually update if in saved state and we have a candidate applicationDetail.Status = ApplicationStatuses.Draft; applicationDetail.CandidateDetails = candidateDetail.RegistrationDetails; applicationDetail.CandidateInformation = candidateDetail.ApplicationTemplate; applicationDetail = _apprenticeshipApplicationWriteRepository.Save(applicationDetail); _serviceBus.PublishMessage(new ApprenticeshipApplicationUpdate(applicationDetail.EntityId, ApplicationUpdateType.Update)); return(applicationDetail); }
private void UpdateApprenticeshipApplicationDetail(Candidate candidate, int vacancyId) { var apprenticeshipApplicationDetail = _apprenticeshipApplicationReadRepository.GetForCandidate(candidate.EntityId, vacancyId); if (apprenticeshipApplicationDetail != null) { apprenticeshipApplicationDetail.CandidateDetails = candidate.RegistrationDetails; _apprenticeshipApplicationWriteRepository.Save(apprenticeshipApplicationDetail); } }
private void ArchiveApplication(Guid candidateId, int vacancyId, bool isArchived) { var applicationDetail = _apprenticeshipApplicationReadRepository.GetForCandidate(candidateId, vacancyId, true); if (applicationDetail.IsArchived == isArchived) { // IsArchived already set to appropriate value, nothing to do. return; } applicationDetail.IsArchived = isArchived; _apprenticeshipApplicationWriteRepository.Save(applicationDetail); }
public void SubmitApplication(Guid candidateId, int vacancyId) { var applicationDetail = _apprenticeshipApplicationReadRepository.GetForCandidate(candidateId, vacancyId, true); applicationDetail.AssertState("Submit apprenticeshipApplication", ApplicationStatuses.Draft); try { applicationDetail.SetStateSubmitting(); _apprenticeshipApplicationWriteRepository.Save(applicationDetail); PublishMessage(applicationDetail); NotifyCandidate(applicationDetail.CandidateId, applicationDetail.EntityId.ToString()); } catch (Exception ex) { _logger.Debug("SubmitApplicationRequest could not be queued for ApplicationId={0}", applicationDetail.EntityId); throw new CustomException("SubmitApplicationRequest could not be queued", ex, MessagingErrorCodes.ApplicationQueuingError); } }
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 void Update( ApprenticeshipApplicationDetail apprenticeshipApplication, ApplicationStatusSummary applicationStatusSummary) { var originalLegacyApplicationId = apprenticeshipApplication.LegacyApplicationId; var originalStatus = apprenticeshipApplication.Status; var originalVacancyStatus = apprenticeshipApplication.VacancyStatus; var originalClosingDate = apprenticeshipApplication.Vacancy.ClosingDate; var originalUnsuccessfulReason = apprenticeshipApplication.UnsuccessfulReason; var originalUnSuccessfulDateTime = apprenticeshipApplication.UnsuccessfulDateTime; // invoked because the status of the apprenticeshipApplication / vacancy *may* have changed if (apprenticeshipApplication.UpdateApprenticeshipApplicationDetail(applicationStatusSummary, _apprenticeshipApplicationReadRepository, _apprenticeshipApplicationWriteRepository)) { const string format = "Updating apprenticeship application (id='{0}', vacancy id='{1}', candidate='{2})" + " from legacy application id='{3}' to '{4}'," + " application status='{5}' to '{6}'," + " vacancy status='{7}' to '{8}'," + " closing date='{9}' to '{10}'," + " unsuccessful reason='{11}' to '{12}'"; _logger.Info( format, apprenticeshipApplication.EntityId, // 0 apprenticeshipApplication.Vacancy.Id, // 1 apprenticeshipApplication.CandidateDetails.EmailAddress, // 2 originalLegacyApplicationId, // 3 applicationStatusSummary.LegacyApplicationId, // 4 originalStatus, // 5 applicationStatusSummary.ApplicationStatus, // 6 originalVacancyStatus, // 7 applicationStatusSummary.VacancyStatus, // 8 originalClosingDate, // 9 applicationStatusSummary.ClosingDate, // 10 originalUnsuccessfulReason, // 11 applicationStatusSummary.UnsuccessfulReason, //12 originalUnSuccessfulDateTime, //13 applicationStatusSummary.UnsuccessfulDateTime); // 14 _apprenticeshipApplicationWriteRepository.Save(apprenticeshipApplication); _applicationStatusAlertStrategy.Send(originalStatus, applicationStatusSummary); } }
public ApprenticeshipApplicationDetail SaveApplication(Guid candidateId, int vacancyId, ApprenticeshipApplicationDetail apprenticeshipApplication) { var applicationDetail = _apprenticeshipApplicationReadRepository.GetForCandidate(candidateId, vacancyId, true); applicationDetail.AssertState("Save apprenticeship application", ApplicationStatuses.Draft); applicationDetail.CandidateInformation = apprenticeshipApplication.CandidateInformation; applicationDetail.AdditionalQuestion1Answer = apprenticeshipApplication.AdditionalQuestion1Answer; applicationDetail.AdditionalQuestion2Answer = apprenticeshipApplication.AdditionalQuestion2Answer; var savedApplication = _apprenticeshipApplicationWriteRepository.Save(applicationDetail); SyncToCandidatesApplicationTemplate(savedApplication); return(savedApplication); }
public void GetApprenticeshipApplicationsReturnsCorrectResults() { //Arrange - Build Applications var applications = BuildApprenticeshipApplicationDetails(); applications.ForEach(a => _apprenticeshipApplicationWriteRepository.Save(a)); //Act - Get application vacancy statuses var summaries = _apprenticeshipApplicationReadRepository .GetApplicationSummaries(TestVacancyId) .ToList(); //Assert - the correct number of applicaitons with the correct vacancy state summaries.Count(v => v.VacancyStatus == VacancyStatuses.Live).Should().Be(10); summaries.Count(v => v.VacancyStatus == VacancyStatuses.Unavailable).Should().Be(7); summaries.Count(v => v.VacancyStatus == VacancyStatuses.Expired).Should().Be(6); }
private void SetApplicationStateSubmitted(ApprenticeshipApplicationDetail apprenticeshipApplication) { apprenticeshipApplication.SetStateSubmitted(); _apprenticeshipApplicationWriteRepository.Save(apprenticeshipApplication); }