Exemplo n.º 1
0
        public async Task Consume(ConsumeContext <CreateGameDto> consumer)
        {
            var gameId = Guid.NewGuid();
            await _context.Games.AddAsync(new Game
            {
                GameId      = gameId,
                GameName    = consumer.Message.GameName,
                GamePlayers = new List <Player>
                {
                    new Player
                    {
                        PlayerId    = Guid.NewGuid(),
                        PlayerLives = 3,
                        PlayerScore = 0,
                        PlayerName  = consumer.Message.PlayerName,
                        IsActive    = false,
                        GameId      = gameId
                    }
                }
            });

            await _context.SaveChangesAsync();

            await _bus.Send <GameDto[]>(_context.Games.Include(c => c.GamePlayers).Select(o => new GameDto
            {
                GameName = o.GameName,
                Players = o.GamePlayers.Select(p => new PlayerDto
                {
                    PlayerName = p.PlayerName,
                    IsActive = p.IsActive,
                    PlayerScore = p.PlayerScore,
                    PlayerLives = p.PlayerLives
                }).ToArray()
            }).ToArray());
        }
        public async Task Consume(ConsumeContext <PlayerJoinedDto> context)
        {
            var gameToUpdate = await _context.Games.FirstOrDefaultAsync(o => o.GameName.Equals(context.Message.GameName, StringComparison.CurrentCultureIgnoreCase));

            gameToUpdate.GamePlayers.Add(new Player
            {
                PlayerName  = context.Message.PlayerName,
                PlayerScore = 0,
                PlayerLives = 3,
                IsActive    = false
            });
            await _context.SaveChangesAsync();
        }