public VerifyMobileViewModel Build()
        {
            var model = new VerifyMobileViewModel()
            {
                Status             = _verifyMobileState,
                PhoneNumber        = _mobileNumber,
                VerifyMobileCode   = _mobileVerificationCode,
                TraineeshipFeature = new TraineeshipFeatureViewModel
                {
                    ShowTraineeshipsLink   = _showTraineeshipsLink,
                    ShowTraineeshipsPrompt = _showTraineeshipsPrompt
                }
            };

            return(model);
        }
        public async Task <ActionResult> VerifyMobile(VerifyMobileViewModel model)
        {
            return(await Task.Run <ActionResult>(() =>
            {
                var response = _accountMediator.VerifyMobile(UserContext.CandidateId, model);
                if (response.ViewModel.TraineeshipFeature == null)
                {
                    _logService.Error("response.ViewModel.TraineeshipFeature == null. Relates to issue with Logstash _id:QWlNNMzdRM2j8q6681rZTg");
                }
                ModelState.Clear();

                switch (response.Code)
                {
                case AccountMediatorCodes.VerifyMobile.ValidationError:
                    response.ValidationResult.AddToModelState(ModelState, string.Empty);
                    return View(response.ViewModel);

                case AccountMediatorCodes.VerifyMobile.InvalidCode:
                    SetUserMessage(VerifyMobilePageMessages.MobileVerificationCodeInvalid, UserMessageLevel.Error);
                    return View(response.ViewModel);

                case AccountMediatorCodes.VerifyMobile.VerificationNotRequired:
                    SetUserMessage(VerifyMobilePageMessages.MobileVerificationNotRequired, UserMessageLevel.Warning);
                    return View(response.ViewModel);

                case AccountMediatorCodes.VerifyMobile.Error:
                    SetUserMessage(VerifyMobilePageMessages.MobileVerificationError, UserMessageLevel.Error);
                    return View(response.ViewModel);

                case AccountMediatorCodes.VerifyMobile.Success:
                    SetUserMessage(VerifyMobilePageMessages.MobileVerificationSuccessText);
                    if (model.ReturnUrl.IsValidReturnUrl())
                    {
                        return Redirect(model.ReturnUrl);
                    }
                    return RedirectToRoute(CandidateRouteNames.Settings);

                default:
                    throw new InvalidMediatorCodeException(response.Code);
                }
            }));
        }
Exemple #3
0
        public async Task <ActionResult> Resend(VerifyMobileViewModel model)
        {
            return(await Task.Run <ActionResult>(() =>
            {
                var response = _accountMediator.Resend(UserContext.CandidateId, model);

                switch (response.Code)
                {
                case AccountMediatorCodes.Resend.Error:
                case AccountMediatorCodes.Resend.ResendNotRequired:
                case AccountMediatorCodes.Resend.ResentSuccessfully:
                    SetUserMessage(response.Message.Text, response.Message.Level);
                    break;

                default:
                    throw new InvalidMediatorCodeException(response.Code);
                }
                return RedirectToAction("VerifyMobile");
            }));
        }
Exemple #4
0
        public MediatorResponse <VerifyMobileViewModel> Resend(Guid candidateId, VerifyMobileViewModel verifyMobileViewModel)
        {
            verifyMobileViewModel = _accountProvider.SendMobileVerificationCode(candidateId, verifyMobileViewModel);

            var traineeshipFeature = _apprenticeshipApplicationProvider.GetTraineeshipFeatureViewModel(candidateId);

            verifyMobileViewModel.TraineeshipFeature = traineeshipFeature;

            switch (verifyMobileViewModel.Status)
            {
            case VerifyMobileState.Ok:
                return(GetMediatorResponse(AccountMediatorCodes.Resend.ResentSuccessfully, verifyMobileViewModel, VerifyMobilePageMessages.MobileVerificationCodeMayHaveBeenResent, UserMessageLevel.Success));

            case VerifyMobileState.MobileVerificationNotRequired:
                return(GetMediatorResponse(AccountMediatorCodes.Resend.ResendNotRequired, verifyMobileViewModel, VerifyMobilePageMessages.MobileVerificationNotRequired, UserMessageLevel.Warning));

            default:
                return(GetMediatorResponse(AccountMediatorCodes.Resend.Error, verifyMobileViewModel, VerifyMobilePageMessages.MobileVerificationCodeResendFailed, UserMessageLevel.Error));
            }
        }
Exemple #5
0
        public VerifyMobileViewModel VerifyMobile(Guid candidateId, VerifyMobileViewModel model)
        {
            _logger.Debug("Calling AccountProvider to verify mobile code candidateId {0} and mobile number {1}",
                          candidateId, model.PhoneNumber);
            try
            {
                _candidateService.VerifyMobileCode(candidateId, model.VerifyMobileCode);
                model.Status = VerifyMobileState.Ok;
            }
            catch (CustomException e)
            {
                switch (e.Code)
                {
                case Domain.Entities.ErrorCodes.EntityStateError:
                    _logger.Info(e.Message, e);
                    model.Status = VerifyMobileState.MobileVerificationNotRequired;
                    break;

                case Application.Interfaces.Users.ErrorCodes.MobileCodeVerificationFailed:
                    _logger.Info(e.Message, e);

                    model.Status = VerifyMobileState.VerifyMobileCodeInvalid;
                    break;

                default:
                    _logger.Error(e.Message, e);
                    model.Status = VerifyMobileState.Error;
                    break;
                }
                model.ViewModelMessage = e.Message;
            }
            catch (Exception e)
            {
                _logger.Error("Mobile code verification failed for candidateId {0} and Lme {1}", candidateId, model.PhoneNumber, e);
                model.Status           = VerifyMobileState.Error;
                model.ViewModelMessage = e.Message;
            }
            return(model);
        }
Exemple #6
0
        public VerifyMobileViewModel SendMobileVerificationCode(Guid candidateId, VerifyMobileViewModel model)
        {
            _logger.Debug("Calling AccountProvider to send mobile verification code for candidateId {0} to mobile number {1}", candidateId, model.PhoneNumber);

            try
            {
                var candidate = _candidateService.GetCandidate(candidateId);
                _candidateService.SendMobileVerificationCode(candidate);
                model.Status = VerifyMobileState.Ok;
            }
            catch (CustomException e)
            {
                switch (e.Code)
                {
                case Domain.Entities.ErrorCodes.EntityStateError:
                    model.Status = VerifyMobileState.MobileVerificationNotRequired;
                    break;

                default:
                    model.Status = VerifyMobileState.Error;
                    _logger.Error(e.Message, e);
                    break;
                }
                model.ViewModelMessage = e.Message;
            }
            catch (Exception e)
            {
                var message = string.Format(
                    "Sending Mobile verification code to mobile number {1} failed for candidateId {0} ",
                    candidateId, model.PhoneNumber);

                _logger.Error(message, e);

                model.Status           = VerifyMobileState.Error;
                model.ViewModelMessage = e.Message;
            }
            return(model);
        }
Exemple #7
0
        public async Task <ActionResult> VerifyMobile(VerifyMobileViewModel model)
        {
            return(await Task.Run <ActionResult>(() =>
            {
                var response = _accountMediator.VerifyMobile(UserContext.CandidateId, model);
                ModelState.Clear();

                switch (response.Code)
                {
                case AccountMediatorCodes.VerifyMobile.ValidationError:
                    response.ValidationResult.AddToModelState(ModelState, string.Empty);
                    return View(response.ViewModel);

                case AccountMediatorCodes.VerifyMobile.InvalidCode:
                    SetUserMessage(VerifyMobilePageMessages.MobileVerificationCodeInvalid, UserMessageLevel.Error);
                    return View(response.ViewModel);

                case AccountMediatorCodes.VerifyMobile.VerificationNotRequired:
                    SetUserMessage(VerifyMobilePageMessages.MobileVerificationNotRequired, UserMessageLevel.Warning);
                    return View(response.ViewModel);

                case AccountMediatorCodes.VerifyMobile.Error:
                    SetUserMessage(VerifyMobilePageMessages.MobileVerificationError, UserMessageLevel.Error);
                    return View(response.ViewModel);

                case AccountMediatorCodes.VerifyMobile.Success:
                    SetUserMessage(VerifyMobilePageMessages.MobileVerificationSuccessText);
                    if (string.IsNullOrEmpty(model.ReturnUrl))
                    {
                        return RedirectToRoute(CandidateRouteNames.Settings);
                    }
                    return Redirect(model.ReturnUrl);

                default:
                    throw new InvalidMediatorCodeException(response.Code);
                }
            }));
        }
Exemple #8
0
        public VerifyMobileViewModel GetVerifyMobileViewModel(Guid candidateId)
        {
            _logger.Debug("Calling CandidateService to fetch candidateId {0} details", candidateId);

            VerifyMobileViewModel model = new VerifyMobileViewModel();

            try
            {
                var candidate = _candidateService.GetCandidate(candidateId);
                model.PhoneNumber = candidate.RegistrationDetails.PhoneNumber;
                if (!candidate.MobileVerificationRequired())
                {
                    model.Status = VerifyMobileState.MobileVerificationNotRequired;
                }
            }
            catch (Exception e)
            {
                _logger.Error("Mobile code verification failed for candidateId {0} and Lme {1}", candidateId, model.PhoneNumber, e);
                model.ViewModelMessage = e.Message;
                model.Status           = VerifyMobileState.Error;
            }
            return(model);
        }
Exemple #9
0
 public VerifyMobileViewBuilder With(VerifyMobileViewModel viewModel)
 {
     _viewModel = viewModel;
     return(this);
 }
Exemple #10
0
        public MediatorResponse <VerifyMobileViewModel> VerifyMobile(Guid candidateId, VerifyMobileViewModel verifyMobileViewModel)
        {
            var validationResult = _verifyMobileViewModelServerValidator.Validate(verifyMobileViewModel);

            if (!validationResult.IsValid)
            {
                return(GetMediatorResponse(AccountMediatorCodes.VerifyMobile.ValidationError, verifyMobileViewModel, validationResult));
            }

            var verifyMobileViewModelResponse = _accountProvider.VerifyMobile(candidateId, verifyMobileViewModel);

            var traineeshipFeature = _apprenticeshipApplicationProvider.GetTraineeshipFeatureViewModel(candidateId);

            verifyMobileViewModel.TraineeshipFeature = traineeshipFeature;

            switch (verifyMobileViewModelResponse.Status)
            {
            case VerifyMobileState.Ok:
                return(GetMediatorResponse(AccountMediatorCodes.VerifyMobile.Success, verifyMobileViewModel, VerifyMobilePageMessages.MobileVerificationSuccessText, UserMessageLevel.Success));

            case VerifyMobileState.VerifyMobileCodeInvalid:
                return(GetMediatorResponse(AccountMediatorCodes.VerifyMobile.InvalidCode, verifyMobileViewModel, VerifyMobilePageMessages.MobileVerificationCodeInvalid, UserMessageLevel.Error));

            case VerifyMobileState.MobileVerificationNotRequired:
                return(GetMediatorResponse(AccountMediatorCodes.VerifyMobile.VerificationNotRequired, verifyMobileViewModel, VerifyMobilePageMessages.MobileVerificationNotRequired, UserMessageLevel.Warning));

            default:
                return(GetMediatorResponse(AccountMediatorCodes.VerifyMobile.Error, verifyMobileViewModel, VerifyMobilePageMessages.MobileVerificationError, UserMessageLevel.Error));
            }
        }