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); } }