Example #1
0
        /// <summary>
        /// Insert a vote to kick a user <paramref name="vote"/>
        /// </summary>
        /// <param name="vote">The user's vote to kick</param>
        /// <returns></returns>
        public Entities.ActionResponses.VoteToKick Execute(Entities.GamePlayerKickVote vote)
        {
            Entities.ActionResponses.VoteToKick response = new Entities.ActionResponses.VoteToKick();

            Entities.Filters.Game.Select filter = new Entities.Filters.Game.Select();
            filter.DataToSelect = Entities.Enums.Game.Select.None;
            filter.GameID = vote.GameID;

            Entities.Game game = _selectGame.Execute(filter);

            if (game.IsCurrentPlayer(vote.VotedUserId))
            {
                response = _insert.Execute(vote);
                response.ResponseCode = Entities.ActionResponses.Enums.VoteToKick.VoteSuccessful;
                response.Game = game;

                if (vote.Vote)
                {
                    response.VotesToKick++;
                }
                else
                {
                    response.VotesToStay++;
                }

                return response;
            }
            else
            {
                response.ResponseCode = Entities.ActionResponses.Enums.VoteToKick.IneligiblePlayerToVote;
                return response;
            }
        }
Example #2
0
        /// <summary>
        /// Insert a vote to kick a user <paramref name="vote"/>
        /// </summary>
        /// <param name="vote">The user's vote to kick</param>
        /// <returns></returns>
        public Entities.ActionResponses.VoteToKick Execute(Entities.GamePlayerKickVote vote)
        {
            Entities.ActionResponses.VoteToKick response = new Entities.ActionResponses.VoteToKick();

            Entities.Filters.Game.Select filter = new Entities.Filters.Game.Select();
            filter.DataToSelect = Entities.Enums.Game.Select.None;
            filter.GameID       = vote.GameID;

            Entities.Game game = _selectGame.Execute(filter);

            if (game.IsCurrentPlayer(vote.VotedUserId))
            {
                response = _insert.Execute(vote);
                response.ResponseCode = Entities.ActionResponses.Enums.VoteToKick.VoteSuccessful;
                response.Game         = game;

                if (vote.Vote)
                {
                    response.VotesToKick++;
                }
                else
                {
                    response.VotesToStay++;
                }

                return(response);
            }
            else
            {
                response.ResponseCode = Entities.ActionResponses.Enums.VoteToKick.IneligiblePlayerToVote;
                return(response);
            }
        }
Example #3
0
        /// <summary>
        /// Insert a vote to kick a user <paramref name="vote"/>
        /// </summary>
        /// <param name="vote">The user's vote to kick</param>
        /// <returns></returns>
        public Entities.ActionResponses.VoteToKick Execute(Entities.GamePlayerKickVote vote)
        {
            using (DbCommand cmd = _db.GetStoredProcCommand("GamePlayerKickVote_Insert"))
            {
                Entities.ActionResponses.VoteToKick response = new Entities.ActionResponses.VoteToKick();

                _db.AddInParameter(cmd, "@GameID", DbType.Int32, vote.GameID);
                _db.AddInParameter(cmd, "@KickUserId", DbType.Int32, vote.KickUserId);
                _db.AddInParameter(cmd, "@VotedUserId", DbType.Int32, vote.VotedUserId);
                _db.AddInParameter(cmd, "@Vote", DbType.Boolean, vote.Vote);

                _db.AddOutParameter(cmd, "@VotesToStay", DbType.Int32, sizeof(Int32));
                _db.AddOutParameter(cmd, "@VotesToKick", DbType.Int32, sizeof(Int32));
                _db.AddOutParameter(cmd, "@TotalPlayers", DbType.Int32, sizeof(Int32));

                using (IDataReader idr = _db.ExecuteReader(cmd))
                {
                    while (idr.Read())
                    {
                        response.AlreadyVoted.Add(idr.GetValueByName<Int32>("VotedUserId"));
                    }
                }

                response.VotesToKick = Int32.Parse(_db.GetParameterValue(cmd, "@VotesToKick").ToString());
                response.VotesToStay = Int32.Parse(_db.GetParameterValue(cmd, "@VotesToStay").ToString());
                response.TotalPlayers = Int32.Parse(_db.GetParameterValue(cmd, "@TotalPlayers").ToString());

                return response;
            }
        }
Example #4
0
        /// <summary>
        /// Insert a vote to kick a user <paramref name="vote"/>
        /// </summary>
        /// <param name="vote">The user's vote to kick</param>
        /// <returns></returns>
        public Entities.ActionResponses.VoteToKick Execute(Entities.GamePlayerKickVote vote)
        {
            using (DbCommand cmd = _db.GetStoredProcCommand("GamePlayerKickVote_Insert"))
            {
                Entities.ActionResponses.VoteToKick response = new Entities.ActionResponses.VoteToKick();

                _db.AddInParameter(cmd, "@GameID", DbType.Int32, vote.GameID);
                _db.AddInParameter(cmd, "@KickUserId", DbType.Int32, vote.KickUserId);
                _db.AddInParameter(cmd, "@VotedUserId", DbType.Int32, vote.VotedUserId);
                _db.AddInParameter(cmd, "@Vote", DbType.Boolean, vote.Vote);

                _db.AddOutParameter(cmd, "@VotesToStay", DbType.Int32, sizeof(Int32));
                _db.AddOutParameter(cmd, "@VotesToKick", DbType.Int32, sizeof(Int32));
                _db.AddOutParameter(cmd, "@TotalPlayers", DbType.Int32, sizeof(Int32));

                using (IDataReader idr = _db.ExecuteReader(cmd))
                {
                    while (idr.Read())
                    {
                        response.AlreadyVoted.Add(idr.GetValueByName <Int32>("VotedUserId"));
                    }
                }

                response.VotesToKick  = Int32.Parse(_db.GetParameterValue(cmd, "@VotesToKick").ToString());
                response.VotesToStay  = Int32.Parse(_db.GetParameterValue(cmd, "@VotesToStay").ToString());
                response.TotalPlayers = Int32.Parse(_db.GetParameterValue(cmd, "@TotalPlayers").ToString());

                return(response);
            }
        }
Example #5
0
        /// <summary>
        /// Insert a vote to kick a user
        /// </summary>
        /// <param name="userVote">The user's vote</param>
        /// <returns></returns>
        public Entities.ActionResponses.VoteToKick Execute(Entities.GamePlayerKickVote userVote)
        {
            string cacheKey = string.Format("KickUser_{0}_FromGame_{1}", userVote.KickUserId, userVote.GameID);

            Entities.User kickUser = _selectUser.Execute(userVote.KickUserId);

            Entities.ActionResponses.VoteToKick response = _insert.Execute(userVote);

            if (response.TotalVotes == 1 &&
                response.ResponseCode == Entities.ActionResponses.Enums.VoteToKick.VoteSuccessful &&
                userVote.Vote)
            {
                String jobId = BackgroundJob.Schedule(() => _checkVotes.Execute(userVote.GameID, userVote.KickUserId), TimeSpan.FromSeconds(30));

                MemoryCache.Default.Set(cacheKey, jobId, new CacheItemPolicy {
                    SlidingExpiration = TimeSpan.FromMinutes(1)
                });
            }

            if (response.AllVotesCasted)
            {
                var cachedJobId = MemoryCache.Default.Get(cacheKey);

                if (cachedJobId != null && cachedJobId is String)
                {
                    BackgroundJob.Delete(cachedJobId as String);
                }
                else
                {
                    _checkVotes.Execute(userVote.GameID, userVote.KickUserId);
                }
            }
            else
            {
                _sendMessage.Voted(userVote.GameID, kickUser, response.VotesToKick,
                                   response.VotesToStay,
                                   response.AlreadyVoted);
            }

            response.KickUser = kickUser;
            return(response);
        }
Example #6
0
        public Entities.Models.Hub.Messages.VoteToKickResult VoteToKick(Entities.Models.Hub.Messages.VoteToKick message)
        {
            Entities.GamePlayerKickVote vote = new Entities.GamePlayerKickVote();
            vote.GameID      = message.GameID;
            vote.KickUserId  = message.KickUserId;
            vote.VotedUserId = Authentication.Security.CurrentUserId;
            vote.Vote        = message.Kick;

            AS.GamePlayerKickVote.Base.IInsert _insert = BusinessLogic.UnityConfig.Container.Resolve <AS.GamePlayerKickVote.Base.IInsert>();

            Entities.ActionResponses.VoteToKick response = _insert.Execute(vote);

            return(new Entities.Models.Hub.Messages.VoteToKickResult
            {
                Content = String.Format("Votes To Kick: {0} <br/> Votes To Stay: {1}",
                                        response.VotesToKick,
                                        response.VotesToStay),
                Title = String.Format("Voted to {0} {1}.", (message.Kick ? "kick" : "keep"), response.KickUser.DisplayName),
                AllVotesCasted = response.AllVotesCasted
            });
        }