private void ExecuteAction(Entities.Game game, Entities.Enums.Hubs.Actions action, IEnumerable <Entities.ActiveConnection> connections, List <Entities.GamePlayer> users) { Entities.GamePlayer sendToPlayer = null; foreach (Entities.ActiveConnection connection in connections) { sendToPlayer = users.FirstOrDefault(player => player.User.UserId == connection.User_UserId); if (sendToPlayer != null) { if (action == Entities.Enums.Hubs.Actions.UpdateWaiting) { _hub.Clients.Client(connection.ActiveConnectionID) .UpdateWaiting(Entities.Models.Helpers.WaitingHeader.Build(game, connection.User_UserId, GetPlayerType(connection)), GetGameLobbyViewModel(connection, game)); } else if (action == Entities.Enums.Hubs.Actions.UpdateGameView) { Entities.Models.Game.Board.GameBoard model = GetGameBoardModal(connection, game); _hub.Clients.Client(connection.ActiveConnectionID) .UpdateGameView(model, GetGameLobbyViewModel(connection, game)); } else if (action == Entities.Enums.Hubs.Actions.UpdateLobby) { _hub.Clients.Client(connection.ActiveConnectionID) .UpdateLobbyView(GetGameLobbyViewModel(connection, game)); } else if (action == Entities.Enums.Hubs.Actions.CardPlayed) { Entities.Models.Game.Board.GameBoard model = new Entities.Models.Game.Board.GameBoard(game, connection.User_UserId, GetPlayerType(connection)); _hub.Clients.Client(connection.ActiveConnectionID) .UpdateAnswers(model.AnswersViewModel, !model.ShowHand); } } } }
private Entities.ActiveConnection Execute(Entities.Game game, Entities.Enums.Hubs.Actions action, Boolean sendToSpectators, Int32?excludedPlayerId = null) { Entities.Filters.ActiveConnection.SelectAll filter = new Entities.Filters.ActiveConnection.SelectAll(); filter.GroupName = String.Format("Game_{0}", game.GameID); List <Entities.ActiveConnection> connections = _selectActiveConnection.Execute(filter); Entities.ActiveConnection excludedConnection = null; if (excludedPlayerId.HasValue) { excludedConnection = connections.DefaultIfEmpty(null).FirstOrDefault(x => x.User_UserId == excludedPlayerId); } ExecuteAction(game, action, connections.Where(x => x.ConnectionType == Entities.Enums.ConnectionType.GamePlayer), game.Players); if (sendToSpectators) { ExecuteAction(game, action, connections.Where(x => x.ConnectionType == Entities.Enums.ConnectionType.GameSpectator), game.Spectators); } return(excludedConnection); }