示例#1
0
        /// <summary>
        /// Sends verification code to logged-in user's phone number.
        /// <para><b> IMPORTANT INFORMATION : The message sending service has not yet been integrated.
        ///                                   So this method will not send message to the user's gsm number.
        ///                                   Instead of returns verification code for testing. </b></para>
        /// </summary>
        /// <returns></returns>
        public async Task <string> SendPhoneNumberVerificationMessageAsync()
        {
            CheckLoginStatus();

            var user = await _userRepository.GetFirstOrDefaultAsync(a => a.UserName == _userName).ConfigureAwait(false);

            if (string.IsNullOrWhiteSpace(user?.PhoneNumber))
            {
                throw new MilvaUserFriendlyException("IdentityInvalidPhoneNumber");
            }

            var verificationCode = GenerateVerificationCode();

            if (!_redisCacheService.IsConnected())
            {
                try
                {
                    await _redisCacheService.ConnectAsync().ConfigureAwait(false);
                }
                catch (Exception)
                {
                    _ = _milvaLogger.LogFatalAsync("Redis is not available!!", MailSubject.ShutDown);
                    throw new MilvaUserFriendlyException("CannotSendMessageNow");
                }
            }

            await _redisCacheService.SetAsync($"pvc_{_userName}", verificationCode, TimeSpan.FromMinutes(3)).ConfigureAwait(false);

            //Doğrulama kodunu mesaj olarak gönderme entegrasyonu buraya eklenecek.
            //O yüzden şimdilik geriye dönüyoruz bu kodu.

            return(verificationCode);
        }