public void Handle(IGameCommand command) { var startGameCommand = command as StartGameCommand; var alreadyPlayingOnBoard = boardManager.FindByConnectionId(startGameCommand.ConnectionId); if (alreadyPlayingOnBoard != null) { broadcastService.Broadcast(command.ConnectionId, $"Player {startGameCommand.PlayerName} already playing on board {alreadyPlayingOnBoard.Name}"); return; } var board = boardManager.Find(startGameCommand.BoardName); if (board == null) { board = StartNewBoard(startGameCommand.BoardName); } if (board.IsAlreadyJoined(startGameCommand.ConnectionId)) { broadcastService.Broadcast(command.ConnectionId, $"Player {startGameCommand.PlayerName} already playing on board {board.Name}"); return; } board.Join(new Player(startGameCommand.PlayerName, startGameCommand.ConnectionId)); broadcastService.Broadcast(command.ConnectionId, $"Player {startGameCommand.PlayerName} joined board {board.Name}"); }