ArmedCards.BusinessLogic.AppServices.GamePlayerKickVote.Insert.Execute C# (CSharp) Метод

Execute() публичный Метод

Insert a vote to kick a user
public Execute ( Entities userVote ) : Entities.ActionResponses.VoteToKick
userVote Entities The user's vote
Результат Entities.ActionResponses.VoteToKick
        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;
        }