Пример #1
0
        public async Task UpdateBoardStateAsync(BoardStateDTO newBoardState, string groupName)
        {
            Console.WriteLine($"{groupName}: Updating board state...");
            await boardStateService.UpdateAsync(newBoardState, groupName);

            Console.WriteLine($"{groupName}: Board state update.");
            await Clients.OthersInGroup(groupName).SendAsync("updateBoardState", newBoardState);

            Console.WriteLine($"{groupName}: New board state sent to other clients in the group.");
        }
Пример #2
0
        public async Task CreateAsync(BoardStateDTO boardStateDTO)
        {
            if (boardStateDTO == null)
            {
                throw new ArgumentNullException($"Argument boardStateDTO is null.");
            }

            BoardState boardState = autoMapper.Map <BoardState>(boardStateDTO);

            boardState.Id = Guid.NewGuid().ToString();
            dbContext.BoardStates.Add(boardState);
            await dbContext.SaveChangesAsync();
        }
        public void Consume(GameSetupStarted e)
        {
            var collection = _database.GetCollection <BoardStateDTO>("BoardStateDTOs");

            var boardStateDTO = new BoardStateDTO {
                Id = e.GameSetupId
            };

            foreach (var territory in e.Board.Territories)
            {
                boardStateDTO.Territories.Add(new TerritoryDTO {
                    Name = territory.Key
                });
            }

            collection.Save(boardStateDTO);
        }
Пример #4
0
        public async Task UpdateAsync(BoardStateDTO boardStateDTO, string roomName)
        {
            Room room = await dbContext.Rooms
                        .Where(r => r.Name == roomName)
                        .FirstOrDefaultAsync();

            if (room == null)
            {
                throw new Exception($"Room with name: {roomName} doesn't exist.");
            }

            BoardState existingBoardState = await dbContext.BoardStates
                                            .Include(bs => bs.Tracks)
                                            .Where(bs => bs.Room.Name == roomName)
                                            .FirstOrDefaultAsync();

            if (existingBoardState == null)
            {
                throw new Exception($"BoardState for room {roomName} not found.");
            }

            BoardState updatedBoardState = autoMapper.Map <BoardState>(boardStateDTO);

            updatedBoardState.RoomId = existingBoardState.RoomId;

            existingBoardState.TempoBPM = updatedBoardState.TempoBPM;

            foreach (var track in existingBoardState.Tracks)
            {
                Track updatedTrack = updatedBoardState.Tracks
                                     .Where(t => t.InstrumentName == track.InstrumentName)
                                     .FirstOrDefault();
                track.Steps = updatedTrack.Steps;
                Console.WriteLine($"Updated track: {track.InstrumentName}");
            }

            await dbContext.SaveChangesAsync();
        }