public void Run() { var sb = new StringBuilder("The following actions were taken to resolve issues with traineeship applications:"); sb.AppendLine(); var applicationsToCheck = _applicationDiagnosticsRepository.GetSubmittedApplicationsWithUnsetLegacyId().ToList(); foreach (var application in applicationsToCheck) { var applicationStatusSummaries = _legacyApplicationStatusesProvider.GetCandidateApplicationStatuses(application.Candidate); var applicationDetail = application.TraineeshipApplicationDetail; var applicationStatusSummary = applicationStatusSummaries.SingleOrDefault(s => s.LegacyVacancyId == applicationDetail.Vacancy.Id); if (applicationStatusSummary == null) { var message = new SubmitTraineeshipApplicationRequest { ApplicationId = applicationDetail.EntityId }; _messageBus.PublishMessage(message); _logger.Warn("Could not patch traineeship application id: {0} with legacy id as no matching application status summary was found. Re-queued instead", applicationDetail.EntityId); } else { _applicationDiagnosticsRepository.UpdateLegacyApplicationId(applicationDetail, applicationStatusSummary.LegacyApplicationId); _logger.Info("Patching traineeship application id: {0} with legacy id: {1}", applicationDetail.EntityId, applicationStatusSummary.LegacyApplicationId); } } }
public IList <ApprenticeshipApplicationSummary> GetApplications(Guid candidateId) { try { // try to get the latest status of apps for the specified candidate from legacy var candidate = _candidateReadRepository.Get(candidateId); if (candidate.LegacyCandidateId != 0) { //Verify candidate exists in legacy system otherwise this call will throw and exception and log an error var submittedApplicationStatuses = _legacyApplicationStatusesProvider.GetCandidateApplicationStatuses(candidate); _applicationStatusUpdater.Update(candidate, submittedApplicationStatuses); } } catch (Exception ex) { // if fails just return apps with their current status var message = string.Format("Failed to update candidate's application statuses from legacy. CandidateId: {0}", candidateId); _logger.Error(message, ex); } return(_apprenticeshipApplicationReadRepository.GetForCandidate(candidateId)); }
public void ShouldNotGetAnyApplicationStatusesForCandidateWithNoSubmittedApplications() { // Arrange. var candidate = CreateCandidate(); _candidateReadRepositoryMock.ResetCalls(); _candidateReadRepositoryMock.Setup(cr => cr.Get(It.IsAny <Guid>())).Returns(candidate); // Act. var result = _legacyApplicationStatusesProvider .GetCandidateApplicationStatuses(candidate) .ToList(); // Assert. result.Should().NotBeNull(); result.Count().Should().Be(0); }