Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        // 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" }));
        }
Exemplo n.º 5
0
        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);
            }
        }