Exemplo n.º 1
0
        private ApprenticeshipApplicationDetail UnarchiveApplication(ApprenticeshipApplicationDetail apprenticeshipApplicationDetail)
        {
            apprenticeshipApplicationDetail.IsArchived = false;
            _apprenticeshipApplicationWriteRepository.Save(apprenticeshipApplicationDetail);

            return(_apprenticeshipApplicationReadRepository.Get(apprenticeshipApplicationDetail.EntityId));
        }
Exemplo n.º 2
0
        public void SetStateInProgress(Guid applicationId)
        {
            var application = _apprenticeshipApplicationReadRepository.Get(applicationId);

            application.SetStateInProgress();
            _apprenticeshipApplicationWriteRepository.Save(application);
            _serviceBus.PublishMessage(new ApprenticeshipApplicationUpdate(applicationId, ApplicationUpdateType.Update));
        }
Exemplo n.º 3
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);
            }
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        private void UpdateApprenticeshipApplicationDetail(Candidate candidate, int vacancyId)
        {
            var apprenticeshipApplicationDetail = _apprenticeshipApplicationReadRepository.GetForCandidate(candidate.EntityId, vacancyId);

            if (apprenticeshipApplicationDetail != null)
            {
                apprenticeshipApplicationDetail.CandidateDetails = candidate.RegistrationDetails;
                _apprenticeshipApplicationWriteRepository.Save(apprenticeshipApplicationDetail);
            }
        }
Exemplo n.º 6
0
        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);
            }
        }
Exemplo n.º 8
0
        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);
                    }
                }
            }
        }
Exemplo n.º 9
0
        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);
 }