public async Task <Result <AddPhoneTwoFactorAuthenticationViewModel> > GetPhoneViewModel()
        {
            Result <AppUserEntity> getAppUserResult = await GetAppUser();

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

            AppUserEntity appUser = getAppUserResult.Value;

            if (string.IsNullOrEmpty(appUser.PhoneNumber))
            {
                _logger.LogError($"User does not have a phone number");
                return(Result.Fail <AddPhoneTwoFactorAuthenticationViewModel>("no_phone_number", "No Phone number"));
            }

            AddPhoneTwoFactorAuthenticationViewModel addPhoneTwoFactorAuthenticationViewModel = new AddPhoneTwoFactorAuthenticationViewModel(
                phoneNumber: appUser.PhoneNumber);

            return(Result.Ok(addPhoneTwoFactorAuthenticationViewModel));
        }
        public async Task <IActionResult> AddTwoFactorPhoneAuthentication()
        {
            Result <AddPhoneTwoFactorAuthenticationViewModel> result = await _twoFactorAuthorizationDataService.GetPhoneViewModel();

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

            AddPhoneTwoFactorAuthenticationViewModel addPhoneTwoFactorAuthenticationViewModel = result.Value;

            StatusAlertViewModel statusAlert = GetTempData <StatusAlertViewModel>(PHONE_STATUS_ALERT_TEMP_DATA_KEY);

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

            Result sendSmsResult = await _twoFactorAuthService.GenerateSmsCode(GetUserId());

            return(View(addPhoneTwoFactorAuthenticationViewModel));
        }