Esempio n. 1
0
        public async Task <IActionResult> LikeTopic(int userId, int topicId)
        {
            if (userId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
            {
                return(Unauthorized());
            }

            //Primary Key userid+postid
            var topicLikees = await _ratingRepo.GetTopicLikes(topicId);

            var like = new RatingLike {
                TopicId = topicId,
                UserId  = userId,
                Value   = 1
            };

            var dislike = new RatingLike {
                TopicId = topicId,
                UserId  = userId,
                Value   = -1
            };
            var likeDeleted = false;

            topicLikees.ForEach(
                (i) => {
                if (i.UserId == userId)
                {
                    if (i.Value == 1)
                    {
                        _mainRepo.Delete <RatingLike>(like);
                        likeDeleted = true;
                    }
                    else
                    {
                        _mainRepo.Delete <RatingLike>(dislike);
                    }
                }
            }
                );
            if (!likeDeleted)
            {
                _mainRepo.Add <RatingLike>(like);
            }

            try {
                if (await _mainRepo.SaveAll())
                {
                    return(NoContent());
                }
            }catch {
                return(BadRequest("Failed"));
            }

            return(BadRequest("Failed"));
        }
        public async Task <IActionResult> LikeAction(int userId, int activityId)
        {
            if (userId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
            {
                return(Unauthorized());
            }

            //Primary Key userid+postid
            var activityLikes = await _activityRepo.GetActivityLikes(activityId);

            var like = new ActivityLike {
                ActivityId = activityId,
                UserId     = userId,
                Value      = 1
            };

            var dislike = new ActivityLike {
                ActivityId = activityId,
                UserId     = userId,
                Value      = -1
            };

            var likeDeleted = false;

            if (activityLikes.Any(a => a.UserId == userId))
            {
                if (activityLikes.Any(a => a.UserId == userId && a.Value == 1))
                {
                    likeDeleted = true;
                    _mainRepo.Delete <ActivityLike>(like);
                }
                else
                {
                    _mainRepo.Delete <ActivityLike>(dislike);
                }
            }

            if (!likeDeleted)
            {
                _mainRepo.Add <ActivityLike>(like);
            }

            try {
                if (await _mainRepo.SaveAll())
                {
                    return(NoContent());
                }
            }catch {
                return(BadRequest("Failed"));
            }

            return(BadRequest("Failed"));
        }
Esempio n. 3
0
        public async Task <IActionResult> LikePost(int userId, int postId)
        {
            if (userId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
            {
                return(Unauthorized());
            }

            //Primary Key userid+postid
            var postLikees = await _repo.GetPostLikes(postId);

            var like = new PostLike {
                UserId = userId,
                PostId = postId
            };

            if (postLikees.Contains(userId))
            {
                _mainRepo.Delete <PostLike>(like);
            }
            else
            {
                _mainRepo.Add <PostLike>(like);
            }

            try {
                if (await _mainRepo.SaveAll())
                {
                    return(NoContent());
                }
            }catch {
                return(BadRequest("Failed"));
            }

            return(BadRequest("Failed"));
        }