private async Task <bool> SendOTPEmailAsync(OTPTracker person)
        {
            try
            {
                var pathToFile = _env.WebRootPath + Path.DirectorySeparatorChar.ToString()
                                 + "Templates" + Path.DirectorySeparatorChar.ToString() + "EmailTemplate"
                                 + Path.DirectorySeparatorChar.ToString() + "otp.html";

                var builder     = new BodyBuilder();
                var callbackuri = $"{_uRIs.MainClient}identity/otp/login?OTP={person.OTP}&Email={person.Email}";

                var encodedUri = HttpUtility.UrlPathEncode(callbackuri.ToString());
                using (StreamReader SourceReader = File.OpenText(pathToFile))
                {
                    builder.HtmlBody = SourceReader.ReadToEnd();
                }
                string messageBody  = string.Format(builder.HtmlBody, person.OTP, encodedUri);
                var    emailMessage = new EmailMessage();
                emailMessage.Subject       = "OTP Verification";
                emailMessage.Content       = messageBody.Replace('{', ' ').Replace('}', ' ');
                emailMessage.SendIt        = true;
                emailMessage.FromAddresses = new List <EmailAddress>();
                emailMessage.ToAddresses.Add(new EmailAddress {
                    Address = person.Email
                });
                await _mailservice.Send(emailMessage);

                return(await Task.Run(() => true));
            }
            catch (Exception ex)
            {
                _logger.Error(ex.ToString());
                return(true);
            }
        }
        private async Task <OTPTracker> ProduceOtpAsync(cor_useraccount user)
        {
            Random rnd = new Random();
            var    otp = (rnd.Next(100000, 999999)).ToString();

            var newOtp = new OTPTracker
            {
                DateIssued = DateTime.Now,
                ExpiryDate = DateTime.Now.AddMinutes(2),
                OTP        = otp,
                UserId     = user.Id,
                Email      = user.Email,
            };

            _logger.Information("I am in ProduceOtpAsync ");
            await _security.OTPTracker.AddAsync(newOtp);

            return(newOtp);
        }