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