Beispiel #1
0
        public async Task LikePost(NewReactionDTO reaction)
        {
            var likes = _context.PostReactions.Where(x => x.UserId == reaction.UserId && x.PostId == reaction.EntityId);

            var dislikes = _context.PostNegativeReactions.Where(x => x.UserId == reaction.UserId && x.PostId == reaction.EntityId);

            if (likes.Any())
            {
                _context.PostReactions.RemoveRange(likes);
                await _context.SaveChangesAsync();

                await _postHub.Clients.All.SendAsync("LikePost", reaction.EntityId);

                return;
            }

            if (dislikes.Any())
            {
                _context.PostNegativeReactions.RemoveRange(dislikes);
                await _context.SaveChangesAsync();
            }

            _context.PostReactions.Add(new DAL.Entities.PostReaction
            {
                PostId = reaction.EntityId,
                IsLike = reaction.IsLike,
                UserId = reaction.UserId
            });

            await _context.SaveChangesAsync();

            await _postHub.Clients.All.SendAsync("LikePost", reaction.EntityId);
        }
        public async Task LikeDislikeComment(NewReactionDTO reaction)
        {
            var likes = _context.CommentReactions.Where(x => x.UserId == reaction.UserId && x.CommentId == reaction.EntityId);

            if (likes.Any() && likes.Select(l => l.IsLike).FirstOrDefault() == reaction.IsLike)
            {
                _context.CommentReactions.RemoveRange(likes);
                await _context.SaveChangesAsync();

                return;
            }
            if (!likes.Any())
            {
                _context.CommentReactions.Add(new DAL.Entities.CommentReaction {
                    CommentId = reaction.EntityId,
                    IsLike    = reaction.IsLike,
                    UserId    = reaction.UserId
                });

                await _context.SaveChangesAsync();

                return;
            }

            _context.CommentReactions.RemoveRange(likes);
            await _context.SaveChangesAsync();

            _context.CommentReactions.Add(new DAL.Entities.CommentReaction {
                CommentId = reaction.EntityId,
                IsLike    = reaction.IsLike,
                UserId    = reaction.UserId
            });

            await _context.SaveChangesAsync();
        }
Beispiel #3
0
        public async Task <IActionResult> LikeComment(NewReactionDTO reaction)
        {
            reaction.UserId = this.GetUserIdFromToken();

            await _likeCommentService.LikeComment(reaction);

            return(Ok());
        }
Beispiel #4
0
        public async Task <IActionResult> DisLikePost(NewReactionDTO reaction)
        {
            reaction.UserId = this.GetUserIdFromToken();

            await _disLikeService.DisLikePost(reaction);

            return(Ok());
        }
        public async Task LikePost(NewReactionDTO reaction)
        {
            var reactionsDTO = new ReactionDTO();

            reactionsDTO.IsLike = reaction.IsLike;

            var user = _context.Users.Where(user => user.Id == reaction.UserId).FirstOrDefault();

            reactionsDTO.User = _mapper.Map <UserDTO>(user);

            var likes = _context.PostReactions.Where(x => x.UserId == reaction.UserId && x.PostId == reaction.EntityId);

            if (likes.Any() && likes.Select(l => l.IsLike).FirstOrDefault() == reaction.IsLike)
            {
                _context.PostReactions.RemoveRange(likes);
                await _context.SaveChangesAsync();

                var firstPost    = GetPost(reaction).Result;
                var firstPostDTO = _mapper.Map <PostDTO>(firstPost);

                await _postHub.Clients.All.SendAsync("Like", firstPostDTO);

                return;
            }
            if (!likes.Any())
            {
                _context.PostReactions.Add(new DAL.Entities.PostReaction {
                    PostId = reaction.EntityId,
                    IsLike = reaction.IsLike,
                    UserId = reaction.UserId
                });

                await _context.SaveChangesAsync();

                var secondPost    = GetPost(reaction).Result;
                var secondPostDTO = _mapper.Map <PostDTO>(secondPost);

                await _postHub.Clients.All.SendAsync("Like", secondPostDTO);

                return;
            }

            _context.PostReactions.RemoveRange(likes);
            await _context.SaveChangesAsync();

            _context.PostReactions.Add(new DAL.Entities.PostReaction {
                PostId = reaction.EntityId,
                IsLike = reaction.IsLike,
                UserId = reaction.UserId
            });

            await _context.SaveChangesAsync();

            var post    = GetPost(reaction).Result;
            var postDTO = _mapper.Map <PostDTO>(post);

            await _postHub.Clients.All.SendAsync("Like", postDTO);
        }
 public async Task <Post> GetPost(NewReactionDTO reaction)
 {
     return(await _context.Posts
            .Include(post => post.Author)
            .ThenInclude(author => author.Avatar)
            .Include(post => post.Preview)
            .Include(post => post.Reactions)
            .ThenInclude(reaction => reaction.User)
            .Include(post => post.Comments)
            .ThenInclude(comment => comment.Reactions)
            .Include(post => post.Comments)
            .ThenInclude(comment => comment.Author)
            .Where(post => post.Id == reaction.EntityId)
            .FirstOrDefaultAsync());
 }
Beispiel #7
0
        public async Task LikePost(NewReactionDTO reaction)
        {
            var likes = _context.PostReactions.Where(x => x.UserId == reaction.UserId && x.PostId == reaction.EntityId);

            if (likes.Any())
            {
                _context.PostReactions.RemoveRange(likes);
                await _context.SaveChangesAsync();

                return;
            }

            _context.PostReactions.Add(new DAL.Entities.PostReaction
            {
                PostId = reaction.EntityId,
                IsLike = reaction.IsLike,
                UserId = reaction.UserId
            });

            await _context.SaveChangesAsync();
        }
Beispiel #8
0
        public async Task ReactionComment(NewReactionDTO reaction)
        {
            var dislike = _context.CommentReactions.Where(x => x.UserId == reaction.UserId && x.CommentId == reaction.EntityId);

            if (dislike.Any())
            {
                _context.CommentReactions.RemoveRange(dislike);
                await _context.SaveChangesAsync();

                // return;
            }

            _context.CommentReactions.Add(new DAL.Entities.CommentReaction
            {
                CommentId = reaction.EntityId,
                IsLike    = reaction.IsLike,
                UserId    = reaction.UserId,
                IsDisLike = reaction.IsDisLike
            });

            await _context.SaveChangesAsync();
        }