public ActionResult SaveQuestionVote(int questionId, int userId, bool vote)
        {
            using (SOFModel dc = new SOFModel())
            {
                try
                {
                    QuestionVote qv;
                    if (dc.QuestionVotes.Where(x => x.QuestionId == questionId && x.UserId == userId).FirstOrDefault() != null)
                    {
                        qv      = dc.QuestionVotes.Where(x => x.QuestionId == questionId && x.UserId == userId).First();
                        qv.Vote = vote;
                    }
                    else
                    {
                        qv            = new QuestionVote();
                        qv.QuestionId = questionId;
                        qv.UserId     = userId;
                        qv.Vote       = vote;
                        dc.QuestionVotes.Add(qv);
                    }
                    dc.SaveChanges();
                }
                catch
                {
                }

                int count = 0;

                foreach (QuestionVote item in dc.QuestionVotes.Where(x => x.QuestionId == questionId).ToList())
                {
                    count += item.Vote == true ? 1 : -1;
                }
                return(Json(count));
            }
        }
Example #2
0
        public async Task <IHttpActionResult> VoteQuestion(int id, bool isup)
        {
            var userId = User.Identity.GetUserId();

            if (userId != null)
            {
                Question comment = await db.Questions.FindAsync(id);

                var commentVoteByUser = await db.QuestionVotes.FirstOrDefaultAsync(x => x.questionId == id && x.votedBy == userId);

                if (comment == null)
                {
                    return(NotFound());
                }
                var vote = commentVoteByUser;
                if (vote != null)
                {
                    if (vote.isUp && isup)
                    {
                        return(BadRequest("You have already voteup"));
                    }
                    else if (vote.isUp && !isup)
                    {
                        vote.isUp = false;
                    }
                    else if (!vote.isUp && !isup)
                    {
                        return(BadRequest("You have already votedown"));
                    }
                    else if (!vote.isUp && isup)
                    {
                        vote.isUp = true;
                    }
                }
                else
                {
                    QuestionVote repvote = new QuestionVote();
                    repvote.isUp       = isup;
                    repvote.votedBy    = userId;
                    repvote.questionId = id;
                    db.QuestionVotes.Add(repvote);
                }
                await db.SaveChangesAsync();

                var q = (from x in comment.QuestionVotes.Where(x => x.questionId == comment.Id)
                         let voteUp = comment.QuestionVotes.Count(m => m.isUp)
                                      let voteDown = comment.QuestionVotes.Count(m => m.isUp == false)
                                                     select new { voteCount = voteUp - voteDown }).FirstOrDefault();

                return(Ok(q));
            }
            else
            {
                return(BadRequest("You are not login"));
            }
        }
Example #3
0
        public static string InsertQueDownVote(int queId, int userId)
        {
            QuestionVote questionVote = new QuestionVote();

            questionVote.DownVote   = 1;
            questionVote.QuestionId = queId;
            questionVote.UserId     = userId;
            questionVote.IsDownVote = 1;

            return(QuestionManager.IsQueDownVoteInsert(questionVote));
        }
        public async Task <IActionResult> PostQuestionVote(int id, string upOrDown)
        {
            // If there is already an existing vote, return a bad request
            var existingVote = await _context.QuestionVotes.AnyAsync(questionVote => questionVote.UserId == GetCurrentUserId() && questionVote.QuestionId == id);

            if (existingVote)
            {
                return(BadRequest());
            }

            // Add the restaurant vote to the table
            var questionVote = new QuestionVote
            {
                QuestionId = id,
                UserId     = GetCurrentUserId(),
                UpOrDown   = upOrDown
            };
            await _context.QuestionVotes.AddAsync(questionVote);

            var question = await _context.Questions.FindAsync(id);

            if (question == null)
            {
                return(NotFound());
            }

            switch (upOrDown)
            {
            case "upvote":
                question.IncreaseUpvoteCount();
                break;

            case "downvote":
                question.IncreaseDownvoteCount();
                break;

            default:
                return(BadRequest());
            }

            _context.Entry(question).State = EntityState.Modified;

            await _context.SaveChangesAsync();

            return(NoContent());
        }
Example #5
0
        public async Task <IActionResult> PostQuestionVote(QuestionVoteViewModel model)
        {
            var user = await userManager.FindByNameAsync(User.Identity.Name);

            if (user == null)
            {
                return(Unauthorized());
            }

            var question = await _context.Questions.Where(x => x.ID == model.QuestionId).FirstOrDefaultAsync();

            if (question == null)
            {
                return(NotFound());
            }

            var vote = await _context.QuestionVotes.Where(x => x.UserId == user.Id && x.QuestionId == model.QuestionId).FirstOrDefaultAsync();

            if (vote != null)
            {
                return(BadRequest("Question has already been voted on."));
            }

            var questionVote = new QuestionVote
            {
                QuestionId = model.QuestionId,
                UserId     = user.Id,
                Vote       = model.Vote
            };

            _context.QuestionVotes.Add(questionVote);

            if (model.Vote == 1)
            {
                question.Upvotes += 1;
            }
            else
            {
                question.Downvotes += 1;
            }

            await _context.SaveChangesAsync();

            return(NoContent());
        }
Example #6
0
        public static int InsertQueDownVote(QuestionVote downVote)
        {
            string connectionString = WebConfigurationManager.ConnectionStrings["DealQuestionAnswerDBCS"].ConnectionString;

            using (SqlConnection con = new SqlConnection(connectionString))
            {
                string query = "insert QuestionVotes (DownVote, QuestionId, UserId, IsDownVote) values(@downVote,@queId,@userId,@isDownVote)";
                using (SqlCommand cmd = new SqlCommand(query, con))
                {
                    cmd.Parameters.AddWithValue("@downVote", downVote.DownVote);
                    cmd.Parameters.AddWithValue("@queId", downVote.QuestionId);
                    cmd.Parameters.AddWithValue("@userId", downVote.UserId);
                    cmd.Parameters.AddWithValue("@isDownVote", downVote.IsDownVote);
                    con.Open();
                    return(cmd.ExecuteNonQuery());
                }
            }
        }
Example #7
0
        public bool upvoteQuestion(int id)
        {
            string   userId   = _caller.Claims.Single(c => c.Type == "id").Value;
            Question question = _context.Questions.SingleOrDefault(q => q.QuestionId == id);

            //if user has not already voted for
            if (_context.QuestionVotes.SingleOrDefault(q => q.QuestionId == id && q.UserId == userId) == null)
            {
                QuestionVote qv = new QuestionVote();
                qv.QuestionId = id;
                qv.UserId     = userId;
                question.Upvotes++;
                _context.QuestionVotes.Add(qv);
                _context.SaveChanges();
                return(true);
            }
            return(false);
        }
        public static string IsQueDownVoteInsert(QuestionVote downVote)
        {
            int rowAffected = QuestionGetaway.InsertQueDownVote(downVote);

            return((rowAffected > 0) ? "true" : "false");
        }