private bool SaveToken(string token, int userId, DateTime expiry) { var newTokEntry = new UserTokenEntry() { EncodedToken = token, AppUserId = userId, ExpiryDate = expiry }; _dbCtx.UserTokenEntries.Add(newTokEntry); try { _dbCtx.SaveChanges(); return(true); } catch (DbUpdateConcurrencyException e) { foreach (var item in e.Entries) { if (item.Entity is UserTokenEntry) { var currValues = item.CurrentValues; var dbValues = item.GetDatabaseValues(); foreach (var property in currValues.Properties) { var currentValue = currValues[property]; var dbValue = dbValues[property]; } // Refresh the original values to bypass next concurrency check item.OriginalValues.SetValues(dbValues); } else { return(false); } } return(true); } catch (Exception) { // Rollback token entry _dbCtx.UserTokenEntries.Remove(newTokEntry); return(false); } }
public User GetUserByTokenEntry(UserTokenEntry entry) { return(_dbContext.Users.Where(x => x.UserId == entry.UserId).FirstOrDefault()); }