Пример #1
0
        public void SetStateInProgress(Guid applicationId)
        {
            var application = _traineeshipApplicationReadRepository.Get(applicationId);

            application.SetStateInProgress();
            _traineeshipApplicationWriteRepository.Save(application);
            _serviceBus.PublishMessage(new TraineeshipApplicationUpdate(applicationId, ApplicationUpdateType.Update));
        }
Пример #2
0
        public void CreateApplication(SubmitTraineeshipApplicationRequest request)
        {
            _logger.Debug("Creating traineeship application Id: {0}", request.ApplicationId);

            var applicationDetail = _apprenticeshipApplicationReadRepository.Get(request.ApplicationId, true);

            try
            {
                var candidate = _candidateReadRepository.Get(applicationDetail.CandidateId, true);

                if (candidate.LegacyCandidateId == 0)
                {
                    _logger.Info(
                        "Candidate with Id: {0} has not been created in the legacy system. Message will be requeued",
                        applicationDetail.CandidateId);
                    Requeue(request);
                }
                else
                {
                    applicationDetail.LegacyApplicationId = _legacyApplicationProvider.CreateApplication(applicationDetail);
                    _traineeeshipApplicationWriteRepository.Save(applicationDetail);
                }
            }
            catch (CustomException ex)
            {
                HandleCustomException(request, ex);
            }
            catch (Exception ex)
            {
                _logger.Error(string.Format("Submit traineeship application with Id = {0} request async process failed.", request.ApplicationId), ex);
                Requeue(request);
            }
        }
        private bool ProcessTraineeshipApplication(ApplicationStatusSummary applicationStatusSummary)
        {
            var traineeshipApplicationDetail = _traineeshipApplicationReadRepository.Get(applicationStatusSummary.LegacyApplicationId);

            if (traineeshipApplicationDetail == null && applicationStatusSummary.LegacyCandidateId != 0)
            {
                // in some cases the application can't be found using the application IDs so use legacy candidate and vacancy IDs
                var candidate = _candidateReadRepository.Get(applicationStatusSummary.LegacyCandidateId, false);

                if (candidate == null)
                {
                    return(false);
                }

                traineeshipApplicationDetail = _traineeshipApplicationReadRepository.GetForCandidate(candidate.EntityId, applicationStatusSummary.LegacyVacancyId);
            }

            if (traineeshipApplicationDetail == null)
            {
                return(false);
            }

            _applicationStatusUpdateStrategy.Update(traineeshipApplicationDetail, applicationStatusSummary);

            return(true);
        }
        public void Handle(ApplicationHousekeepingRequest request)
        {
            ApplicationDetail application;

            switch (request.VacancyType)
            {
            case VacancyType.Apprenticeship:
            {
                application = _apprenticeshipApplicationReadRepository.Get(request.ApplicationId, false);

                if (application == null)
                {
                    _logService.Debug("Apprenticeship application no longer exists, no housekeeping to do for id={0}",
                                      request.ApplicationId);
                    return;
                }
                break;
            }

            case VacancyType.Traineeship:
            {
                application = _traineeshipApplicationReadRepository.Get(request.ApplicationId, false);

                if (application == null)
                {
                    _logService.Debug("Traineeship application no longer exists, no housekeeping to do for id={0}",
                                      request.ApplicationId);
                    return;
                }
                break;
            }

            default:
                throw new InvalidOperationException(string.Format("Unknown vacancy type: {0}.", request.VacancyType));
            }

            if (application.DateApplied.HasValue && application.DateApplied <= GetHousekeepingDate())
            {
                _logService.Info("Deleting submitted application: type={0}, id={1}, date applied={2}",
                                 request.VacancyType, request.ApplicationId, application.DateApplied);

                _hardDeleteApplicationStrategy.Delete(
                    request.VacancyType,
                    request.ApplicationId);

                _logService.Info("Deleted submitted application: type={0}, id={1}, date applied={2}",
                                 request.VacancyType, request.ApplicationId, application.DateApplied);
                return;
            }

            Successor.Handle(request);
        }
        public void SubmitApplication(Guid applicationId)
        {
            var traineeshipApplicationDetail = _traineeshipApplicationReadRepository.Get(applicationId, true);

            try
            {
                PublishMessage(traineeshipApplicationDetail);
                NotifyCandidate(traineeshipApplicationDetail);
            }
            catch (Exception ex)
            {
                _logger.Debug("SubmitTraineeshipApplicationRequest could not be queued for ApplicationId={0}", applicationId);

                throw new CustomException("SubmitTraineeshipApplicationRequest could not be queued", ex,
                                          MessagingErrorCodes.ApplicationQueuingError);
            }
        }
Пример #6
0
        public void SubmitApplication(Guid applicationId)
        {
            var traineeshipApplicationDetail = _traineeshipApplicationReadRepository.Get(applicationId, true);

            try
            {
                traineeshipApplicationDetail.SetStateSubmitting();
                traineeshipApplicationDetail.SetStateSubmitted();

                _traineeshipApplicationWriteRepository.Save(traineeshipApplicationDetail);
                _serviceBus.PublishMessage(new TraineeshipApplicationUpdate(traineeshipApplicationDetail.EntityId, ApplicationUpdateType.Create));

                NotifyCandidate(traineeshipApplicationDetail);
            }
            catch (Exception ex)
            {
                _logger.Debug("SubmitTraineeshipApplicationRequest could not be queued for ApplicationId={0}", applicationId);

                throw new CustomException("SubmitTraineeshipApplicationRequest could not be queued", ex,
                                          MessagingErrorCodes.ApplicationQueuingError);
            }
        }
 public void Run()
 {
     _traineeshipApplicationReadRepository.Get(Guid.NewGuid());
 }
Пример #8
0
 public TraineeshipApplicationDetail GetApplication(Guid applicationId)
 {
     return(_traineeshipApplicationReadRepository.Get(applicationId));
 }
        private TraineeshipApplicationDetail GetApplication(IEnumerable <CommunicationToken> tokens)
        {
            var applicationId = Guid.Parse(tokens.First(m => m.Key == CommunicationTokens.ApplicationId).Value);

            return(_traineeshipApplicationReadRepository.Get(applicationId, true));
        }
        public TraineeshipApplicationDetail GetApplicationForReview(Guid applicationId)
        {
            var application = _traineeshipApplicationReadRepository.Get(applicationId);

            return(application);
        }