예제 #1
0
        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);
            }
        }