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