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 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; // invoked because the status of the apprenticeshipApplication / vacancy *may* have changed if (apprenticeshipApplication.UpdateApprenticeshipApplicationDetail(applicationStatusSummary)) { 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 _apprenticeshipApplicationWriteRepository.Save(apprenticeshipApplication); _applicationStatusChangedStrategy.Send(applicationStatusSummary); } }