public IActionResult GetPosts([FromBody] PostsInfo postsInfo) { var blog = _blogRepository.Blogs .FirstOrDefault(b => b.User.UserName == postsInfo.Username); if (blog == null) { return(NotFound("User not found")); } var tagsIsNotExist = postsInfo.Tags == null || !postsInfo.Tags.Any(); var posts = _postRepository.Posts.Include(p => p.PostTags) .Where(p => (postsInfo.Type == null || p.Type == postsInfo.Type) && p.Blog == blog && (tagsIsNotExist || p.PostTags.Any(t => postsInfo.Tags.Contains(t.Tag.Name)))) .OrderByDescending(p => p.Created); var totalItems = posts.Count(); return(Ok(new UserPostsViewData { Posts = posts .Skip((postsInfo.CurrentPage - 1) * ItemsPerPage) .Take(ItemsPerPage) .Select(p => new ItemViewData <Post> { Item = p, Likes = p.Likes.Count, IsLiked = _postLikeRepository.IsLiked(User.Identity.Name, p.Id), Comments = p.Comments.Count }), PagingInfo = new PagingInfo { CurrentPage = postsInfo.CurrentPage, TotalItems = totalItems, ItemsPerPage = ItemsPerPage } })); }
public IActionResult PostLike(int postId) { var currentUser = _userRepository.Users.FirstOrDefault(u => u.UserName == User.Identity.Name); if (currentUser == null) { return(NotFound("User not found")); } var userPost = _postRepository.Posts.FirstOrDefault(p => p.Id == postId); if (userPost == null) { return(NotFound("Post not found")); } var postLike = _postLikeRepository.PostLikes .FirstOrDefault(l => l.User.Equals(currentUser) && l.Post.Equals(userPost)); if (postLike == null) //like is not exist { _postLikeRepository.SavePostLike(new PostLike { Post = userPost, User = currentUser }); } else //unlike post { _postLikeRepository.DeletePostLike(postLike); } return(Ok(new ItemViewData <Post> { Likes = _postLikeRepository.GetLikes(postId), IsLiked = _postLikeRepository.IsLiked(User.Identity.Name, postId) })); }