/// <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); } }
/// <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); } }
/// <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); }
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 }); }
/// <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) { return(_insert.Execute(vote)); }
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 }; }