Пример #1
0
    public void Upvote(int tabIndex)
    {
        if (!this.PreCheck())
        {
            return;
        }
        if (this.Upvoting)
        {
            MsgController.ShowMsg(SFST.T.Sharing_Wait_Request);
            return;
        }
        string ID = this.pages[tabIndex].ID;

        this.Upvoting = true;
        VotePacket toSend = new VotePacket
        {
            vote   = true,
            voteOn = ID
        };

        GameTracker.Tracker.client.AuthedRequest(toSend, delegate(DefaultPacket r)
        {
            SyncContext.RunOnUI(delegate
            {
                if (r.Success)
                {
                    VoteResponse voteResponse = r.ToTargetPacket <VoteResponse>();
                    Debug.Log(voteResponse.Action);
                    if (voteResponse.Action == "VOTE_PLACED")
                    {
                        MsgController.ShowMsg(SFST.T.Sharing_Vote_Placed);
                    }
                    else
                    {
                        MsgController.ShowMsg(SFST.T.Sharing_Vote_Revoked);
                    }
                    this.ReloadPage(delegate
                    {
                        RocketPost post = this.GetPost(ID);
                        if (post != null)
                        {
                            post.PlayAnimation();
                        }
                    });
                }
                else
                {
                    MsgController.ShowMsg(SFST.T.Sharing_Vote_Failed);
                }
                this.Upvoting = false;
            });
        });
    }
Пример #2
0
        public async Task <IActionResult> Vote([FromBody] VotePacket packet)
        {
            User     user     = HttpContext.Items["User"] as User;
            Campaign campaign = await _campaignSaberContext.Campaigns.FirstOrDefaultAsync(c => packet.CampaignId == c.Id);

            if (campaign == null)
            {
                return(NotFound());
            }
            Vote vote = campaign.Stats.Votes.FirstOrDefault(v => v.VoterID == user.Id);

            if (vote == null)
            {
                vote = new Vote
                {
                    VoterID  = user.Id,
                    IsUpvote = packet.Value
                };
                campaign.Stats.Votes.Add(vote);
            }
            else
            {
                if ((vote.IsUpvote && packet.Value) || !vote.IsUpvote && !packet.Value)
                {
                    campaign.Stats.Votes.Remove(vote);
                }
                else
                {
                    vote.IsUpvote = packet.Value;
                }
            }
            _campaignSaberContext.Campaigns.Update(campaign);
            await _campaignSaberContext.SaveChangesAsync();

            return(NoContent());
        }