public ActionResult Like(int newsId, int likeType)
        {
            var userId = this.CurrentUser.Id;
            var like = this.likes.AllLikes().FirstOrDefault(x => x.AuthorId == userId && x.NewsId == newsId);
            if (like == null)
            {
                like = new NewsLike
                {
                    AuthorId = userId,
                    NewsId = newsId,
                    Type = (LikeType)likeType
                };
                this.likes.Add(like);
            }
            else
            {
                this.likes.Delete(like);
            }

               var newsLikes = this.likes.AllLikes()
                .Where(x => x.NewsId == newsId);

            if(newsLikes.Count() < 1)
            {
                return this.Json(new { Count = 0 });
            }
            else
            {
                var count = newsLikes.Sum(x => (int)x.Type);
                return this.Json(new { Count = count });
            }
        }
Example #2
0
        public async Task Like(int id)
        {
            var user = await _authenticateService.GetAuthUser();

            var existedLikeFromUser = (await _unitOfWork.Repository <NewsLike>()
                                       .GetAllAsync(e => e.NewsId == id && e.UserThatLikedId == user.Id))
                                      .SingleOrDefault();

            //remove like if user already liked
            if (existedLikeFromUser != null)
            {
                _unitOfWork.Repository <NewsLike>().Remove(existedLikeFromUser);
            }
            else
            {
                var newLikeFromUser = new NewsLike()
                {
                    NewsId = id, UserThatLikedId = user.Id
                };
                _unitOfWork.Repository <NewsLike>().Add(newLikeFromUser);
            }

            await _unitOfWork.SaveChangesAsync();
        }