public async Task <Result <AddEmailTwoFactorAuthenticationViewModel> > GetEmailViewModel()
        {
            Result <AppUserEntity> getAppUserResult = await GetAppUser();

            if (getAppUserResult.Failure)
            {
                return(Result.Fail <AddEmailTwoFactorAuthenticationViewModel>(getAppUserResult.Errors));
            }

            AppUserEntity appUser = getAppUserResult.Value;

            if (string.IsNullOrEmpty(appUser.Email))
            {
                _logger.LogError($"User does not have a phone number");
                return(Result.Fail <AddEmailTwoFactorAuthenticationViewModel>("no_email_address", "No Email address"));
            }

            AddEmailTwoFactorAuthenticationViewModel emailTwoFactorAuthenticationViewModel = new AddEmailTwoFactorAuthenticationViewModel();

            return(Result.Ok(emailTwoFactorAuthenticationViewModel));
        }
        public async Task <IActionResult> AddTwoFactorEmailAuthentication()
        {
            Result <AddEmailTwoFactorAuthenticationViewModel> result = await _twoFactorAuthorizationDataService.GetEmailViewModel();

            if (result.Failure)
            {
                SaveTempData(INDEX_STATUS_ALERT_TEMP_DATA_KEY, StatusAlertViewExtension.Get(result));
                return(RedirectToAction(nameof(Index)));
            }

            AddEmailTwoFactorAuthenticationViewModel addEmailTwoFactorAuthenticationViewModel = new AddEmailTwoFactorAuthenticationViewModel();

            StatusAlertViewModel statusAlert = GetTempData <StatusAlertViewModel>(EMAIL_STATUS_ALERT_TEMP_DATA_KEY);

            if (statusAlert != null)
            {
                ModelState.AddErrors(statusAlert.ValidationErrors);
                addEmailTwoFactorAuthenticationViewModel.StatusAlert = statusAlert;
            }

            Result sendMailResult = await _twoFactorAuthService.GenerateAndSendEmailCode(GetUserId());

            return(View(addEmailTwoFactorAuthenticationViewModel));
        }