private async Task <Player> GetPlayerAsync(CancellationToken token) { var authId = GetAuthId(); if (!await _context.Player.AnyAsync <Player>(x => x.AuthString == authId, cancellationToken: token)) { var entity = new Player() { DisplayName = _currentUser.GetName(), AuthString = authId, Email = _currentUser.GetEmail() }; if (!await _context.Player.AnyAsync <Player>(cancellationToken: token)) { foreach (var role in _context.PlayerRole) { entity.Roles.Add(new PlayerRolePlayer() { PlayerRoleId = role.Id }); } } await _context.Player.AddAsync(entity, token); await _context.SaveChangesAsync(token); } var player = _context.Player.Include(p => p.Roles).ThenInclude(role => role.PlayerRole).First <Player>(x => x.AuthString == authId); //TODO: Remove this fix if (string.IsNullOrEmpty(player.Email)) { player.Email = _currentUser.GetEmail(); await _context.SaveChangesAsync(token); } return(player); }
public override Task <int> SaveChangesAsync(CancellationToken cancellationToken = new CancellationToken()) { if (_currentUser != null && _dateTime != null) { foreach (var entry in ChangeTracker.Entries <AuditableEntity>()) { switch (entry.State) { case EntityState.Added: entry.Entity.CreatedBy = _currentUser.GetName(); entry.Entity.Created = _dateTime.Now; break; case EntityState.Modified: entry.Entity.LastModifiedBy = _currentUser.GetName(); entry.Entity.LastModified = _dateTime.Now; break; } } } return(base.SaveChangesAsync(cancellationToken)); }