Example #1
0
        public async Task <ActionResult> AddLike(string username)
        {
            var sourceUserId = User.GetUserId();
            var likedUser    = await _unitOfWork.UserRepository.GetUserByUsernameAsync(username);

            var sourceUser = await _unitOfWork.LikesRepository.GetUserWithLikes(sourceUserId);

            if (likedUser == null)
            {
                return(NotFound());
            }

            if (sourceUser.UserName == username)
            {
                return(BadRequest("You cannot like yourself"));
            }

            var userLike = await _unitOfWork.LikesRepository.GetUserLike(sourceUserId, likedUser.Id);

            // TODO: Implement Toggle
            if (userLike != null)
            {
                return(BadRequest("You already liked this user"));
            }

            userLike = new AppUserLike
            {
                SourceUserId = sourceUserId,
                LikedUserId  = likedUser.Id,
            };

            sourceUser.LikedUsers.Add(userLike);

            if (await _unitOfWork.Complete())
            {
                return(Ok());
            }

            return(BadRequest("Failed to like user"));
        }
Example #2
0
        public async Task <ActionResult> AddLike(string userName)
        {
            var sourceUserId = User.GetUserId();
            var likedUser    = await _userRepository.GetUserByUserNameAsync(userName);

            var sourceUser = await _likesRepository.GetUserWithLikes(sourceUserId);

            if (likedUser == null)
            {
                return(NotFound());
            }

            if (sourceUser.UserName == userName)
            {
                return(BadRequest("You cannot like yourself"));
            }

            var userLike = await _likesRepository.GetUserLike(sourceUserId, likedUser.Id);

            if (userLike != null)
            {
                return(BadRequest("You already like this user"));
            }

            userLike = new AppUserLike
            {
                SourceUserId = sourceUserId,
                LikedUserId  = likedUser.Id
            };

            sourceUser.LikedUsers.Add(userLike);

            if (await _userRepository.SaveAllChangesAsync().ConfigureAwait(false))
            {
                return(Ok());
            }

            return(BadRequest("Failed to like user"));
        }