예제 #1
0
        public async Task <ActionResult> RemoveLike(ulong id)
        {
            User user = await _userManager.GetUserAsync(User);

            if (user != null)
            {
                ForumLike like = _context.ForumLikes.FirstOrDefault(l => l.AddedBy == user.Id && l.Post == id);

                if (like != null)
                {
                    // There is a like, so we will remove it
                    _context.ForumLikes.Remove(like);
                    await _context.SaveChangesAsync();

                    User author = await _userManager.FindByIdAsync(like.GivenTo);

                    author.post_likes -= 1;

                    await _userManager.UpdateAsync(author);

                    return(Json("Success"));
                }
                else
                {
                    // No like exists
                    return(Json("Failure"));
                }
            }
            else
            {
                // There is no user (?)
                return(Json("Failure"));
            }
        }
예제 #2
0
        public async Task <ActionResult> AddLike(ulong id)
        {
            User user = await _userManager.GetUserAsync(User);

            ForumPost post = _context.ForumPosts.FirstOrDefault(p => p.PostID == id);

            if (post == null)
            {
                return(Json("No post!"));
            }

            if (user != null)
            {
                if (_context.ForumLikes.Any(l => l.AddedBy == user.Id && l.Post == id))
                {
                    // Cancel because there is already a like
                    return(Json("Failure"));
                }
                else
                {
                    string likeid = $"{id}-{user.Id}";

                    // Success
                    ForumLike like = new ForumLike()
                    {
                        AddedBy = user.Id,
                        LikeID  = likeid,
                        Post    = id,
                        GivenTo = post.Author
                    };

                    _context.ForumLikes.Add(like);

                    await _context.SaveChangesAsync();

                    User author = await _userManager.FindByIdAsync(like.GivenTo);

                    author.post_likes += 1;

                    await _userManager.UpdateAsync(author);

                    return(Json("Success"));
                }
            }
            else
            {
                // There is no user (?)
                return(Json("Failure"));
            }
        }
예제 #3
0
        public async Task LikeAsync(string forumPostId, string userId)
        {
            var like = await this.likeRepository.All()
                       .FirstOrDefaultAsync(x => x.ForumPostId == forumPostId && x.UserId == userId);

            if (like == null)
            {
                like = new ForumLike
                {
                    ForumPostId = forumPostId,
                    UserId      = userId,
                };
                await this.likeRepository.AddAsync(like);
            }

            await this.likeRepository.SaveChangesAsync();
        }