示例#1
0
        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");
            }
        }