public IEnumerable <ApprenticeshipApplicationDetail> GetApplicationsForValidCandidatesWithUnsetLegacyId()
        {
            var applicationsForValidCandidatesWithUnsetLegacyId = new List <ApprenticeshipApplicationDetail>();

            //Message queue back off strategy is to wait 30 seconds before initial retry then 5 minutes for each subsequent retry
            //6 Minutes provides enough time for three attempts
            var outsideLikelyUpdateTime = DateTime.Now.AddMinutes(60);

            var applicationWithUnsetLegacyId = Collection.AsQueryable().Where(a => a.Status == ApplicationStatuses.Submitting && a.DateUpdated < outsideLikelyUpdateTime && a.LegacyApplicationId == 0);

            foreach (var mongoApprenticeshipApplicationDetail in applicationWithUnsetLegacyId)
            {
                var candidate = _candidateReadRepository.Get(mongoApprenticeshipApplicationDetail.CandidateId);
                //Exclude any applications associated with a candidate that does not yet have a valid legacy candidate id.
                //These candidates need updating first before any applications will go through.
                if (candidate.LegacyCandidateId == 0)
                {
                    continue;
                }

                var apprenticeshipApplicationDetail = _mapper.Map <MongoApprenticeshipApplicationDetail, ApprenticeshipApplicationDetail>(mongoApprenticeshipApplicationDetail);
                _logger.Debug("Apprenticeship application {0} is associated with a valid candidate but does not have a valid legacy application id from the legacy service", apprenticeshipApplicationDetail.EntityId);
                applicationsForValidCandidatesWithUnsetLegacyId.Add(apprenticeshipApplicationDetail);
            }

            return(applicationsForValidCandidatesWithUnsetLegacyId);
        }
Ejemplo n.º 2
0
        private bool ProcessApprenticeshipApplication(ApplicationStatusSummary applicationStatusSummary)
        {
            var apprenticeshipApplicationDetail = default(ApprenticeshipApplicationDetail);

            if (applicationStatusSummary.ApplicationId != Guid.Empty)
            {
                apprenticeshipApplicationDetail = _apprenticeshipApplicationReadRepository.Get(applicationStatusSummary.ApplicationId);
            }

            if (apprenticeshipApplicationDetail == null && applicationStatusSummary.LegacyApplicationId != 0)
            {
                apprenticeshipApplicationDetail = _apprenticeshipApplicationReadRepository.Get(applicationStatusSummary.LegacyApplicationId);
            }

            if (apprenticeshipApplicationDetail == 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);

                apprenticeshipApplicationDetail = _apprenticeshipApplicationReadRepository.GetForCandidate(candidate.EntityId, applicationStatusSummary.LegacyVacancyId);
            }

            if (apprenticeshipApplicationDetail == null)
            {
                return(false); // not necessarily an error as may be a traineeship
            }

            _applicationStatusUpdateStrategy.Update(apprenticeshipApplicationDetail, applicationStatusSummary);

            return(true);
        }
        public Candidate GetCandidate(string username)
        {
            var candidates = _candidateReadRepository.Get(username).ToList();

            if (candidates.Count == 1)
            {
                return(candidates.Single());
            }

            var user = _userReadRepository.Get(username);

            return(_candidateReadRepository.Get(user.EntityId));
        }
        public ServiceBusMessageStates Consume(CandidateHousekeeping candidateHousekeeping)
        {
            var candidateId = candidateHousekeeping.CandidateId;

            _logService.Debug("Running housekeeping strategies for CandidateId: {0}", candidateId);

            var user      = _userReadRepository.Get(candidateId);
            var candidate = _candidateReadRepository.Get(candidateId);

            if (user == null && candidate == null)
            {
                _logService.Info("No User or Candidate found for CandidateId: {0}. Likely deleted by another housekeeping sweep", candidateId);
            }
            else
            {
                foreach (var housekeepingChain in _housekeepingChains)
                {
                    housekeepingChain.Handle(user, candidate);
                }
            }

            _logService.Debug("Housekeeping for CandidateId: {0} complete", candidateId);

            return(ServiceBusMessageStates.Complete);
        }
        public Candidate AuthenticateCandidate(string username, string password)
        {
            var user = _userReadRepository.Get(username, false);

            if (user != null)
            {
                user.AssertState("Authenticate user", UserStatuses.Active, UserStatuses.PendingActivation, UserStatuses.Locked, UserStatuses.Dormant);

                if (_authenticationService.AuthenticateUser(user.EntityId, password))
                {
                    var candidate = _candidateReadRepository.Get(user.EntityId);

                    if (user.LoginIncorrectAttempts > 0)
                    {
                        user.LoginIncorrectAttempts = 0;
                    }

                    if (user.Status == UserStatuses.Dormant)
                    {
                        user.Status = UserStatuses.Active;
                    }

                    user.LastLogin = DateTime.UtcNow;

                    _userWriteRepository.Save(user);
                    _serviceBus.PublishMessage(new CandidateUserUpdate(user.EntityId, CandidateUserUpdateType.Update));

                    return(candidate);
                }

                RegisterFailedLogin(user);
            }

            return(null);
        }
Ejemplo n.º 6
0
        public void SendPasswordResetCode(string username)
        {
            var user = _userReadRepository.Get(username, false);

            if (user == null)
            {
                _logger.Info(string.Format("Cannot send password reset code, username not found: \"{0}\".", username));
                return;
            }

            var candidate = _candidateReadRepository.Get(user.EntityId);

            var currentDateTime = DateTime.Now;
            var expiry          = currentDateTime.AddDays(_passwordResetCodeExpiryDays);

            string passwordResetCode;

            if (!string.IsNullOrEmpty(user.PasswordResetCode) && (user.PasswordResetCodeExpiry > currentDateTime))
            {
                // Reuse existing token and set new expiry date
                passwordResetCode = user.PasswordResetCode;
            }
            else
            {
                // generate new code and send
                passwordResetCode = _codeGenerator.GenerateAlphaNumeric();
            }

            user.SetStatePasswordResetCode(passwordResetCode, expiry);
            _userWriteRepository.Save(user);

            // Send Password Reset Code
            SendPasswordResetCodeViaCommunicationService(candidate, user.PasswordResetCode);
        }
Ejemplo n.º 7
0
        public void SendSavedSearchAlerts(Guid batchId)
        {
            var allCandidatesSavedSearchAlerts = _savedSearchAlertRepository.GetCandidatesSavedSearchAlerts();

            foreach (var candidateId in allCandidatesSavedSearchAlerts.Keys)
            {
                var candidate = _candidateReadRepository.Get(candidateId);
                var user      = _userReadRepository.Get(candidateId);

                var candidateSavedSearchAlerts = allCandidatesSavedSearchAlerts[candidateId];

                if (candidate.AllowsCommunication() && user.IsActive())
                {
                    var communicationRequest = CommunicationRequestFactory.GetSavedSearchAlertCommunicationRequest(candidate, candidateSavedSearchAlerts);

                    _serviceBus.PublishMessage(communicationRequest);

                    // Update candidates saved search alerts to sent
                    candidateSavedSearchAlerts.ToList().ForEach(dd =>
                    {
                        dd.BatchId = batchId;
                        _savedSearchAlertRepository.Save(dd);
                    });
                }
                else
                {
                    // Soft delete candidates saved search status alerts by setting batch id to empty
                    candidateSavedSearchAlerts.ToList().ForEach(dd =>
                    {
                        dd.BatchId = Guid.Empty;
                        _savedSearchAlertRepository.Save(dd);
                    });
                }
            }
        }
Ejemplo n.º 8
0
        private void CreateCandidate(CreateCandidateRequest request)
        {
            try
            {
                _logger.Debug("Creating candidate Id: {0}", request.CandidateId);

                var user = _userReadRepository.Get(request.CandidateId);
                user.AssertState("Create legacy user", UserStatuses.Active, UserStatuses.Locked);

                var candidate = _candidateReadRepository.Get(request.CandidateId, true);
                if (candidate.LegacyCandidateId == 0)
                {
                    _logger.Info("Sending request to create candidate in legacy system: Candidate Id: \"{0}\"", request.CandidateId);
                    var legacyCandidateId = _legacyCandidateProvider.CreateCandidate(candidate);
                    candidate.LegacyCandidateId = legacyCandidateId;
                    _candidateWriteRepository.Save(candidate);
                    _logger.Info("Candidate created in legacy system: Candidate Id: \"{0}\", Legacy Candidate Id: \"{1}\"", request.CandidateId, legacyCandidateId);
                }
                else
                {
                    _logger.Warn("User has already been activated in legacy system: Candidate Id: \"{0}\"", request.CandidateId);
                }
            }
            catch (Exception ex)
            {
                _logger.Error(string.Format("Create candidate with id {0} request async process failed", request.CandidateId), ex);
                Requeue(request);
            }
        }
        public void ResetForgottenPassword(string username, string passwordCode, string newPassword)
        {
            var user = _userReadRepository.Get(username);

            var candidate = _candidateReadRepository.Get(user.EntityId);

            if (user.PasswordResetCode != null && user.PasswordResetCode.Equals(passwordCode, StringComparison.CurrentCultureIgnoreCase))
            {
                if (user.PasswordResetCodeExpiry != null && DateTime.UtcNow > user.PasswordResetCodeExpiry)
                {
                    throw new CustomException("Password reset code has expired.", Interfaces.Users.ErrorCodes.UserPasswordResetCodeExpiredError);
                }

                _authenticationService.ResetUserPassword(user.EntityId, newPassword);

                user.SetStateActive();

                user.LastLogin = DateTime.UtcNow;

                _userWriteRepository.Save(user);
                _serviceBus.PublishMessage(new CandidateUserUpdate(user.EntityId, CandidateUserUpdateType.Update));
                _auditRepository.Audit(user, AuditEventTypes.UserResetPassword, user.EntityId);

                SendPasswordResetConfirmationMessage(candidate);
            }
            else
            {
                RegisterFailedPasswordReset(user);

                throw new CustomException("Password reset code \"{0}\" is invalid for user \"{1}\"", Interfaces.Users.ErrorCodes.UserPasswordResetCodeIsInvalid, passwordCode, username);
            }
        }
Ejemplo n.º 10
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);
        }
Ejemplo n.º 11
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);
            }
        }
        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));
        }
Ejemplo n.º 13
0
        public void ResendActivationCode(string username)
        {
            var user = _userReadRepository.Get(username, false);

            if (user == null)
            {
                throw new CustomException("Unknown username", UserErrorCodes.UnknownUserError);
            }

            user.AssertState("Resend activate code", UserStatuses.PendingActivation);

            var candidate = _candidateReadRepository.Get(user.EntityId);

            var currentDateTime = DateTime.Now;
            var expiry          = currentDateTime.AddDays(_activationCodeExpiryDays);

            if (!string.IsNullOrEmpty(user.ActivationCode) && (user.ActivateCodeExpiry > currentDateTime))
            {
                // Reuse existing token and set new expiry date
                user.PasswordResetCodeExpiry = expiry;
            }
            else
            {
                // generate new code and set expiry date
                var activationCode = _codeGenerator.GenerateAlphaNumeric();
                user.SetStatePendingActivation(activationCode, expiry);
            }

            _userWriteRepository.Save(user);

            SendActivationCode(candidate, user.ActivationCode);
        }
        public Candidate SaveCandidate(Candidate candidate)
        {
            var result = _candidateWriteRepository.Save(candidate);

            _serviceBus.PublishMessage(new CandidateUserUpdate(candidate.EntityId, CandidateUserUpdateType.Update));
            var reloadedCandidate = _candidateReadRepository.Get(candidate.EntityId);

            var candidateApplications = _getCandidateApplicationsStrategy
                                        .GetApplications(candidate.EntityId)
                                        .Where(a => a.Status == ApplicationStatuses.Draft || a.Status == ApplicationStatuses.Saved)
                                        .ToList();

            candidateApplications.ForEach(candidateApplication =>
            {
                try
                {
                    UpdateApprenticeshipApplicationDetail(reloadedCandidate, candidateApplication.LegacyVacancyId);
                }
                catch (Exception e)
                {
                    // try updating the next one
                    var message = string.Format(
                        "Error while updating a draft application with the updated user personal details for user {0}",
                        candidate.EntityId);
                    _logger.Warn(message, e);
                }
            });

            return(result);
        }
Ejemplo n.º 15
0
        public Candidate AuthenticateCandidate(string username, string password)
        {
            var user = _userReadRepository.Get(username, false);

            if (user != null)
            {
                user.AssertState("Authenticate user", UserStatuses.Active, UserStatuses.PendingActivation, UserStatuses.Locked);

                if (_authenticationService.AuthenticateUser(user.EntityId, password))
                {
                    var candidate = _candidateReadRepository.Get(user.EntityId);

                    if (user.LoginIncorrectAttempts > 0)
                    {
                        user.SetStateActive();
                        _userWriteRepository.Save(user);
                    }

                    return(candidate);
                }

                RegisterFailedLogin(user);
            }

            return(null);
        }
Ejemplo n.º 16
0
        public void SendDailyDigests(Guid batchId)
        {
            //todo: 1.7: this should accommodate more than just expiring drafts...
            var candidatesDailyDigest = _expiringDraftRepository.GetCandidatesDailyDigest();

            foreach (var candidateDailyDigest in candidatesDailyDigest)
            {
                var candidate = _candidateReadRepository.Get(candidateDailyDigest.Key);

                if (candidate.CommunicationPreferences.AllowEmail || candidate.CommunicationPreferences.AllowMobile)
                {
                    var communicationMessage = CommunicationRequestFactory.GetCommunicationMessage(candidate, candidateDailyDigest.Value);
                    _bus.PublishMessage(communicationMessage);

                    // Update candidates expiring drafts to sent
                    candidateDailyDigest.Value.ToList().ForEach(dd =>
                    {
                        dd.BatchId = batchId;
                        _expiringDraftRepository.Save(dd);
                    });
                }
                else
                {
                    // Delete candidates expiring drafts
                    candidateDailyDigest.Value.ToList().ForEach(_expiringDraftRepository.Delete);
                }
            }
        }
        public void SendAccountUnlockCode(string username)
        {
            var user = _userReadRepository.Get(username);

            user.AssertState("Send unlock code", UserStatuses.Locked);

            var candidate = _candidateReadRepository.Get(user.EntityId);

            if (user.AccountUnlockCodeExpiry < DateTime.Now)
            {
                // Account unlock code has expired, renew it.
                _lockUserStrategy.LockUser(user);
            }

            var unlockCodeExpiryDays = _configurationManager.GetAppSetting <int>("UnlockCodeExpiryDays");

            var firstName         = candidate.RegistrationDetails.FirstName;
            var emailAddress      = candidate.RegistrationDetails.EmailAddress;
            var accountUnlockCode = user.AccountUnlockCode;
            var expiryInDays      = string.Format(unlockCodeExpiryDays == 1 ? "{0} day" : "{0} days", unlockCodeExpiryDays);

            var tokens = new[]
            {
                new CommunicationToken(CommunicationTokens.CandidateFirstName, firstName),
                new CommunicationToken(CommunicationTokens.Username, emailAddress),
                new CommunicationToken(CommunicationTokens.AccountUnlockCode, accountUnlockCode),
                new CommunicationToken(CommunicationTokens.AccountUnlockCodeExpiryDays, expiryInDays)
            };

            _communicationService.SendMessageToCandidate(
                candidate.EntityId, MessageTypes.SendAccountUnlockCode, tokens);
        }
Ejemplo n.º 18
0
        public void VerifyMobile(Guid candidateId, string verificationCode)
        {
            var candidate = _candidateReadRepository.Get(candidateId);

            if (!candidate.MobileVerificationRequired())
            {
                var message = string.Format("The mobile number associated with candidate Id: {0} does not require verification.", candidate.EntityId);
                throw new CustomException(message, Domain.Entities.ErrorCodes.EntityStateError);
            }

            if (candidate.CommunicationPreferences.MobileVerificationCode == verificationCode)
            {
                candidate.CommunicationPreferences.MobileVerificationCode            = string.Empty;
                candidate.CommunicationPreferences.MobileVerificationCodeDateCreated = null;
                candidate.CommunicationPreferences.VerifiedMobile = true;

                _candidateWriteRepository.Save(candidate);
                _serviceBus.PublishMessage(new CandidateUserUpdate(candidate.EntityId, CandidateUserUpdateType.Update));
                _auditRepository.Audit(candidate, AuditEventTypes.CandidateVerifiedMobileNumber, candidate.EntityId);
            }
            else
            {
                var errorMessage = string.Format("Mobile verification code {0} is invalid for candidate {1} with mobile number {2}", verificationCode, candidateId, candidate.RegistrationDetails.PhoneNumber);
                throw new CustomException(errorMessage, Interfaces.Users.ErrorCodes.MobileCodeVerificationFailed);
            }
        }
        private void SyncToCandidatesApplicationTemplate(TraineeshipApplicationDetail traineeshipApplicationDetail)
        {
            var candidate = _candidateReadRepository.Get(traineeshipApplicationDetail.CandidateId);

            candidate.ApplicationTemplate.Qualifications = traineeshipApplicationDetail.CandidateInformation.Qualifications;
            candidate.ApplicationTemplate.WorkExperience = traineeshipApplicationDetail.CandidateInformation.WorkExperience;

            _candidateWriteRepository.Save(candidate);
        }
Ejemplo n.º 20
0
        public void WhenIGetMyMobileVerificationCode()
        {
            var email     = _tokenManager.GetTokenByKey(BindingData.UserEmailAddressTokenName);
            var candidate = _candidateReadRepository.Get(email);

            if (candidate != null)
            {
                _tokenManager.SetToken(BindingData.MobileVerificationCodeTokenName, candidate.CommunicationPreferences.MobileVerificationCode);
            }
        }
        private void SyncToCandidatesApplicationTemplate(ApprenticeshipApplicationDetail apprenticeshipApplicationDetail)
        {
            var candidate = _candidateReadRepository.Get(apprenticeshipApplicationDetail.CandidateId);

            candidate.ApplicationTemplate.AboutYou         = apprenticeshipApplicationDetail.CandidateInformation.AboutYou;
            candidate.ApplicationTemplate.EducationHistory = apprenticeshipApplicationDetail.CandidateInformation.EducationHistory;
            candidate.ApplicationTemplate.Qualifications   = apprenticeshipApplicationDetail.CandidateInformation.Qualifications;
            candidate.ApplicationTemplate.WorkExperience   = apprenticeshipApplicationDetail.CandidateInformation.WorkExperience;

            _candidateWriteRepository.Save(candidate);
        }
        public void SendPendingUsernameCode(Guid userId)
        {
            var user = _userReadRepository.Get(userId);

            if (user == null)
            {
                _logger.Info(string.Format("Cannot send pending username code, userid not found: \"{0}\".", userId));
                return;
            }

            var candidate = _candidateReadRepository.Get(user.EntityId);

            SendPendingUsernameCodeViaCommunicationService(user, candidate);
        }
        public TraineeshipApplicationDetail CreateApplication(Guid candidateId, int vacancyId)
        {
            var vacancyDetails = _vacancyDataProvider.GetVacancyDetails(vacancyId);

            if (vacancyDetails == null)
            {
                return(null);
            }

            var candidate         = _candidateReadRepository.Get(candidateId);
            var applicationDetail = CreateApplicationDetail(candidate, vacancyDetails);

            return(applicationDetail);
        }
        public void UpdateUsername(Guid userId, string verfiyCode, string password)
        {
            var user      = _userAccountService.GetUser(userId);
            var candidate = _candidateReadRepository.Get(userId);

            _userAccountService.UpdateUsername(userId, verfiyCode, password);

            var existingCandidates = _candidateReadRepository.Get(user.PendingUsername, false);

            foreach (var existingCandidate in existingCandidates)
            {
                //Any candidate now associated with a null user record must have been pending activation and can be deleted.
                var existingUser = _userReadRepository.Get(existingCandidate.EntityId);
                if (existingUser == null)
                {
                    _candidateWriteRepository.Delete(existingCandidate.EntityId);
                    _serviceBus.PublishMessage(new CandidateUserUpdate(user.EntityId, CandidateUserUpdateType.Delete));
                }
            }

            candidate.RegistrationDetails.EmailAddress = user.PendingUsername;
            _saveCandidateStrategy.SaveCandidate(candidate);
            _serviceBus.PublishMessage(new CandidateUserUpdate(user.EntityId, CandidateUserUpdateType.Update));
        }
        public void Send(Guid candidateId, IEnumerable <CommunicationToken> tokens)
        {
            var candidate = _candidateReadRepository.Get(candidateId);

            var application = GetApplication(tokens);
            var vacancy     = _vacancyDataProvider.GetVacancyDetails(application.Vacancy.Id, true);

            var applicationTokens = new[]
            {
                new CommunicationToken(CommunicationTokens.CandidateFirstName, candidate.RegistrationDetails.FirstName),
                new CommunicationToken(CommunicationTokens.ApplicationVacancyTitle, vacancy.Title),
                new CommunicationToken(CommunicationTokens.ApplicationVacancyReference, vacancy.VacancyReference)
            };

            _sendCandidateCommunicationStrategy.Send(candidateId, MessageTypes.ApprenticeshipApplicationSubmitted, applicationTokens);
        }
        public override void Handle(CommunicationRequest communicationRequest)
        {
            var candidateId = GetCandidateId(communicationRequest);
            var user        = _userReadRepository.Get(candidateId);
            var candidate   = _candidateReadRepository.Get(candidateId);

            if (!ShouldCommunicateWithUser(user))
            {
                _logService.Info("Will NOT send any messages to user '{0}' email '{1}' in state '{2}'",
                                 user.EntityId, user.Username, user.Status);
                return;
            }

            HandleEmailMessage(candidate, communicationRequest);
            HandleSmsMessage(candidate, communicationRequest);
        }
Ejemplo n.º 27
0
        private void SyncToCandidatesApplicationTemplate(Guid candidateId, TraineeshipApplicationDetail traineeshipApplication)
        {
            var candidate = _candidateReadRepository.Get(candidateId);

            candidate.ApplicationTemplate.Qualifications  = traineeshipApplication.CandidateInformation.Qualifications;
            candidate.ApplicationTemplate.WorkExperience  = traineeshipApplication.CandidateInformation.WorkExperience;
            candidate.ApplicationTemplate.TrainingCourses = traineeshipApplication.CandidateInformation.TrainingCourses;

            if (!candidate.MonitoringInformation.DisabilityStatus.HasValue &&
                traineeshipApplication.CandidateInformation.DisabilityStatus.HasValue)
            {
                candidate.MonitoringInformation.DisabilityStatus = traineeshipApplication.CandidateInformation.DisabilityStatus;
            }

            _candidateWriteRepository.Save(candidate);
        }
        private void SyncToCandidateApplicationTemplate(Guid candidateId, ApprenticeshipApplicationDetail apprenticeshipApplication)
        {
            var candidate = _candidateReadRepository.Get(candidateId);

            candidate.ApplicationTemplate.AboutYou         = apprenticeshipApplication.CandidateInformation.AboutYou;
            candidate.ApplicationTemplate.EducationHistory = apprenticeshipApplication.CandidateInformation.EducationHistory;
            candidate.ApplicationTemplate.Qualifications   = apprenticeshipApplication.CandidateInformation.Qualifications;
            candidate.ApplicationTemplate.WorkExperience   = apprenticeshipApplication.CandidateInformation.WorkExperience;
            candidate.ApplicationTemplate.TrainingCourses  = apprenticeshipApplication.CandidateInformation.TrainingCourses;

            if (!candidate.MonitoringInformation.DisabilityStatus.HasValue &&
                apprenticeshipApplication.CandidateInformation.DisabilityStatus.HasValue)
            {
                candidate.MonitoringInformation.DisabilityStatus = apprenticeshipApplication.CandidateInformation.DisabilityStatus;
            }

            _candidateWriteRepository.Save(candidate);
        }
        public void ResetForgottenPassword(string username, string passwordCode, string newPassword)
        {
            var user = _userReadRepository.Get(username);

            var candidate = _candidateReadRepository.Get(user.EntityId);

            if (candidate.LegacyCandidateId == 0)
            {
                // Candidate record does not exist on legacy system, create it now.
                var legacyCandidateId = _legacyCandidateProvider.CreateCandidate(candidate);

                candidate.LegacyCandidateId = legacyCandidateId;

                _candidateWriteRepository.Save(candidate);
            }

            _resetForgottenPasswordStrategy.ResetForgottenPassword(username, passwordCode, newPassword);
        }
Ejemplo n.º 30
0
        public void ActivateCandidate(string username, string activationCode)
        {
            var user = _userReadRepository.Get(username);

            user.AssertState("Activate user", UserStatuses.PendingActivation);

            var candidate = _candidateReadRepository.Get(user.EntityId);

            if (candidate.LegacyCandidateId == 0)
            {
                // Create candidate on legacy system before activating
                var legacyCandidateId = _legacyCandidateProvider.CreateCandidate(candidate);
                candidate.LegacyCandidateId = legacyCandidateId;
                _candidateWriteRepository.Save(candidate);
            }

            _registrationService.Activate(username, activationCode);
        }