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; }); }); }
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()); }