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."); }
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); }
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(); }