public IActionResult DislikePhoto(int postId)
        {
            var userId = User.CurrentUserId();

            if (postId < 0)
            {
                return(BadRequest("PostId claim error, cannot find PostID"));
            }

            UserLikePost like = new UserLikePost();

            like.UserId = userId;
            like.PostId = postId;
            Post post = db.Post.Where(p => p.Id == postId).FirstOrDefault();

            if (post == null)
            {
                return(BadRequest("PostId claim error, cannot find PostID"));
            }

            like.PostUserId = post.UserId;
            like.CreateDate = DateTime.Now;
            db.UserLikePost.Remove(like);
            db.SaveChanges();
            return(Ok("Cancel Like successfully"));
        }
Пример #2
0
        private async Task Dislike()
        {
            var likedRes = await _userLikePost.Get <List <Model.UserLikePost> >(new UserLikePostSearchRequest
            {
                UserId = APIService.loggedProfile.UserId,
                PostId = loadedPost.PostId
            });

            UserLikePost local = likedRes.FirstOrDefault();

            if (local == null)
            {
                UserLikePostUpsertRequest request = new UserLikePostUpsertRequest()
                {
                    Liked = false, UserId = APIService.loggedProfile.UserId, PostId = loadedPost.PostId
                };
                try
                {
                    await _userLikePost.Insert <Model.UserLikePost>(request);
                    await SetLikeDislike();
                }
                catch (Exception ex)
                {
                    await Application.Current.MainPage.DisplayAlert("Error", ex.Message, "OK");
                }
            }
            else if (local.Liked == false || local.Liked == true)
            {
                try
                {
                    await _userLikePost.Update <Model.UserLikePost>(0, new UserLikePostUpsertRequest()
                    {
                        Liked  = false,
                        PostId = loadedPost.PostId,
                        UserId = APIService.loggedProfile.UserId
                    });
                    await SetLikeDislike();
                }
                catch (Exception ex)
                {
                    await Application.Current.MainPage.DisplayAlert("Error", ex.Message, "OK");
                }
            }
        }
Пример #3
0
        public async Task <JsonResult> IncreaseLikes([FromBody] UserLikePost userLikePost)
        {
            //If there is no id of the user who like the post, it will be set the current user`s id
            if (userLikePost.UserId is null)
            {
                userLikePost.UserId = this._userManager.GetUserId(User);
            }

            if (IsUserExist(userLikePost.UserId) && this._postService.IsPostExist(userLikePost.PostId))
            {
                var post = await this._postService
                           .GetPostById(userLikePost.PostId);

                if (await IsPostLikedAsync(userLikePost.PostId, userLikePost.UserId))
                {
                    //like to be removed
                    var like = post.UsersLikes.FirstOrDefault(l => l.UserId == userLikePost.UserId && l.PostId == userLikePost.PostId);

                    post.UsersLikes.Remove(like);

                    await this._postService.EditPost(post);

                    return(new JsonResult(false));
                }
                else
                {
                    // Add new user like post as set post id and user id
                    post.UsersLikes.Add(new UserLikePost
                    {
                        PostId = userLikePost.PostId,
                        UserId = userLikePost.UserId
                    });
                    await this._postService.EditPost(post);

                    return(new JsonResult(true));
                }
            }
            else
            {
                throw new ArgumentException($"Invalid data.");
            }
        }
Пример #4
0
        private async Task SetLikeDislike()
        {
            var likedRes = await _userLikePost.Get <List <Model.UserLikePost> >(new UserLikePostSearchRequest
            {
                UserId = APIService.loggedProfile.UserId,
                PostId = loadedPost.PostId
            });

            UserLikePost local         = likedRes.FirstOrDefault();
            var          numberOfLikes = await _userLikePost.Get <List <Model.UserLikePost> >(new UserLikePostSearchRequest()
            {
                PostId = loadedPost.PostId,
                Liked  = true
            });

            var numberOfDislikes = await _userLikePost.Get <List <Model.UserLikePost> >(new UserLikePostSearchRequest()
            {
                PostId = loadedPost.PostId,
                Liked  = false
            });

            NumberOfLikes    = numberOfLikes.Count();
            NumberOfDislikes = numberOfDislikes.Count();
            if (local == null)
            {
                LikeSource    = ImageSource.FromFile("like.png");
                DislikeSource = ImageSource.FromFile("dislike.png");
            }
            else if (local.Liked == true)
            {
                LikeSource    = ImageSource.FromFile("alreadyliked.png");
                DislikeSource = ImageSource.FromFile("dislike.png");
            }
            else if (local.Liked == false)
            {
                LikeSource    = ImageSource.FromFile("like.png");
                DislikeSource = ImageSource.FromFile("alreadydisliked.png");
            }
        }