Example #1
0
        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);
        }
Example #2
0
        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));
        }