Beispiel #1
0
        public DbRepoStatusCode SendVerificationCode(string email)
        {
            using (var context = new ApplicationDbContext())
            {
                var account = context.Users
                              .Include(a => a.PasswordRecoveryQuestion)
                              .SingleOrDefault(a => a.Email.Equals(email));

                if (account == null)
                {
                    return(DbRepoStatusCode.NotFound);
                }

                var verificationCode = context.PasswordResetVerificationCodes
                                       .Include(c => c.Account)
                                       .SingleOrDefault(c => c.Account.Id == account.Id && c.IsActive && c.ExpirationDate > DateTime.Now);

                if (verificationCode == null)
                {
                    verificationCode = new PasswordResetVerificationCode
                    {
                        Account        = account,
                        Code           = new Random().Next(10000, 99999).ToString(),
                        ExpirationDate = DateTime.Now.AddMinutes(15),
                        IsActive       = true
                    };

                    context.PasswordResetVerificationCodes.Add(verificationCode);
                    context.SaveChanges();

                    _emailService.SendVerificationCode(email, verificationCode.Code);

                    return(DbRepoStatusCode.Success);
                }

                return(DbRepoStatusCode.Failed);
            }
        }