public ResponseMessageModels LikeQuestion(QuestionLike mQuestionLike) { ResponseMessageModels result = new ResponseMessageModels(); var likes = (from u in db.QuestionLikes where u.UserId == mQuestionLike.UserId && u.QuestionId == mQuestionLike.QuestionId select u).FirstOrDefault(); Question question = db.Questions.Find(mQuestionLike.QuestionId); if (likes == null) { db.QuestionLikes.Add(mQuestionLike); question.LikeCount++; db.SaveChanges(); result.status = 1; result.message = "Liked"; result.data = (from like in db.QuestionLikes where like.QuestionId == mQuestionLike.QuestionId select mQuestionLike.Id).Count(); return(result); } db.QuestionLikes.Remove(likes); question.LikeCount--; question.LikeCount = question.LikeCount > 0 ? question.LikeCount-- : 0; db.SaveChanges(); result.status = 2; result.message = "Dislike"; result.data = question.LikeCount; return(result); }
// GET: /Question/Like/5 public ActionResult Like(int questionId) { var userId = User.Identity.GetUserId(); if (!db.QuestionLikes.Any(q => q.LikerID == userId && q.QuestionID == questionId)) { QuestionLike newlike = new QuestionLike() { QuestionID = questionId, LikerID = userId }; db.QuestionLikes.Add(newlike); db.SaveChanges(); } Question question = db.Questions.Find(questionId); return(RedirectToAction("Index", new { sessionId = question.SessionID })); }
public IActionResult upVoteQuestion(QuestionLike ql) { if (ModelState.IsValid) { int numOfLikes = db.QuestionLikes.Where(l => l.UserId == UserManager.GetUserId(User) && l.QuestionId == ql.QuestionId).Count(); if (numOfLikes > 0) { User user = db.Users.Find(db.Questions.Find(ql.QuestionId).UserId); user.Score--; db.QuestionLikes.Remove(db.QuestionLikes.Where(qls => qls.UserId == UserManager.GetUserId(User) && qls.QuestionId == ql.QuestionId).ToList()[0]); db.SaveChanges(); } else { User user = db.Users.Find(db.Questions.Find(ql.QuestionId).UserId); user.Score++; db.QuestionLikes.Add(ql); db.SaveChanges(); } } return(RedirectToAction(nameof(Show), new { id = ql.QuestionId })); }
public async Task <IActionResult> LikeDislikeQuestionAsync([FromBody] QuestionLike like) { //Get Request's User var claimsIdentity = (ClaimsIdentity)this.User.Identity; if (!claimsIdentity.IsAuthenticated) { return(Unauthorized()); } //Get Student Profile var claim = claimsIdentity.FindFirst(System.Security.Claims.ClaimTypes.NameIdentifier); var userEmail = claim.Value; var User = await _userManager.FindByEmailAsync(userEmail); like.UserId = User.Id; var result = _queLikeSrv.LikeDislikeQuestion(like); if (result.Item1 != null) { return(Ok(new { Status = "Success", Action = result.Item1.State, Likes = result.Item2, Dislikes = result.Item3 })); } return(Ok(new { Status = "Failed" })); }
private LikeQuestion SaveLike(int id, string UserId) { var QuestionId = id; var baseContext = Context.Request.GetHttpContext(); var item = _applicationDbContext.Questions.SingleOrDefault(i => i.QuestionId == QuestionId); var liked = new QuestionLike { QuestionId = item.QuestionId, IPAddress = baseContext.Request.UserHostAddress, UserAgent = baseContext.Request.UserAgent, UserId = UserId, UserLike = true }; var getUserLike = item.QuestionLikes.FirstOrDefault(e => e.UserId == liked.UserId); if (getUserLike == null) { _applicationDbContext.QuestionLikes.Add(liked); } else { getUserLike.UserLike = !getUserLike.UserLike; } _applicationDbContext.SaveChangesAsync(); var question = _applicationDbContext.Questions.SingleOrDefault(i => i.QuestionId == QuestionId); var UserStatus = _applicationDbContext.QuestionLikes.SingleOrDefault(i => i.QuestionId == QuestionId && i.UserId == UserId); return(new LikeQuestion { LikeCount = question.QuestionLikes.Count(e => e.UserLike), UserLikeStatus = UserStatus.UserLike }); }
public (QuestionLike, long, long) LikeDislikeQuestion(QuestionLike like) { //Check if liked or disliked before var res = _queLikeRepo.GetAll().SingleOrDefault(q => q.QuestionId == like.QuestionId && q.UserId == like.UserId); //Like/Dislike Counter var question = _queRepo.Get(like.QuestionId); if (res != null) { //Check If Like/Dislike To Toggle if (res.State == like.State) //Means Need To Remove Like/Dis Action { if (like.State == "like") { question.Likes -= 1; _queRepo.Update(question); } else { question.Dislikes -= 1; _queRepo.Update(question); } _queLikeRepo.Delete(res); return(res, question.Likes, question.Dislikes); } else { if (like.State == "like") { question.Likes += 1; question.Dislikes -= 1; res.State = "like"; _queLikeRepo.Update(res); _queRepo.Update(question); } else { question.Likes -= 1; question.Dislikes += 1; res.State = "dislike"; _queLikeRepo.Update(res); _queRepo.Update(question); } } return(_queLikeRepo.Update(res), question.Likes, question.Dislikes); } else //Means New Action { if (like.State == "like") { question.Likes += 1; _queRepo.Update(question); } else { question.Dislikes += 1; _queRepo.Update(question); } return(_queLikeRepo.Insert(like), question.Likes, question.Dislikes); } }