public void AddPlayer(int playerId, int userTeamId, int gameId, int userId) { try { var bogusController = ViewRenderer.CreateController <HomeController>(); _service.AddUserTeamPlayer(playerId, userTeamId, gameId); var _teamOverView = _service.GetTeamOverViewViewModel(userTeamId, gameId, "", ""); var partialViewPlayerList = ViewRenderer.RenderPartialView("~/Views/ViewPlayers/playerlist.cshtml", _teamOverView, bogusController.ControllerContext); var searchForm = ViewRenderer.RenderPartialView("~/Views/ViewPlayers/searchform.cshtml", _teamOverView, bogusController.ControllerContext); var _chosenPlayers = ViewRenderer.RenderPartialView("~/Views/ViewPlayers/chosenplayers.cshtml", _teamOverView, bogusController.ControllerContext); // here, if game has ended, just do a client all. if (_teamOverView.HasEnded) { Clients.All.addNewPlayerListToPage(partialViewPlayerList, gameId); Clients.All.addNewSearchFormToPage(searchForm, gameId); Clients.Caller.addNewChosenPlayersToPage(_chosenPlayers, gameId); } else { var _teamOverView2 = _service.GetNextTeamOverViewViewModel(userTeamId, gameId); // update this client's view - remove the form Clients.Caller.addNewPlayerListToPage(partialViewPlayerList, gameId); Clients.Caller.addNewSearchFormToPage(searchForm, gameId); Clients.Caller.addNewChosenPlayersToPage(_chosenPlayers, gameId); var partialViewPlayerList2 = ViewRenderer.RenderPartialView("~/Views/ViewPlayers/playerlist.cshtml", _teamOverView2, bogusController.ControllerContext); var searchForm2 = ViewRenderer.RenderPartialView("~/Views/ViewPlayers/searchform.cshtml", _teamOverView2, bogusController.ControllerContext); var _chosenPlayers2 = ViewRenderer.RenderPartialView("~/Views/ViewPlayers/chosenplayers.cshtml", _teamOverView2, bogusController.ControllerContext); // only send the new content to the NEXT userteam player, not all the others (it's only the next userteam player who should see the addplayerform) // hopefully username matches Context.User.Identity.Name; foreach (var connectionId in _connections.GetConnections(_teamOverView2.UserName)) { Clients.Client(connectionId).addNewPlayerListToPage(partialViewPlayerList2, gameId); Clients.Client(connectionId).addNewSearchFormToPage(searchForm2, gameId); Clients.Client(connectionId).addNewChosenPlayersToPage(_chosenPlayers2, gameId); //Clients.Others.addNewPlayerListToPage(partialViewPlayerList2); // Clients.Others.addNewSearchFormToPage(searchForm2); } } } catch (Exception ex) { Clients.All.addNewBanterToPage("There has been a problem adding the player"); } }