예제 #1
0
        public object Single(PostIdRequest request)
        {
            IMeta         response = null;
            QueryResponse queryResponse;

            var post = _postControllerCore.Single(request.Id, out queryResponse);

            if (queryResponse.success)
            {
                response = new PostResponse()
                {
                    Result = post
                };
            }
            else
            {
                response = new ResponseError()
                {
                    ErrorCode = queryResponse.errorCode,
                    Message   = queryResponse.errorMessage
                };
            }

            return(response);
        }
예제 #2
0
        private async Task AddImageLike(PostIdRequest request, CancellationToken cancellationToken)
        {
            var like = new LikeModel()
            {
                PostId  = request.PostId,
                UserId  = request.UserId,
                IsLiked = true
            };
            await _likeDbContext.Likes.AddAsync(like, cancellationToken);

            await _likeDbContext.SaveChangesAsync(cancellationToken);

            WritingInformationLog($"added like :like id = {like.Id} by: user id {like.UserId}");
        }
예제 #3
0
        private async Task Like(PostIdRequest request, CancellationToken cancellationToken)
        {
            var(isExted, post) = await ExistedPostByIdAsync(request, cancellationToken);

            if (isExted)
            {
                if (!post.IsLiked)
                {
                    post.IsLiked = true;
                    _likeDbContext.Likes.Update(post);
                    await _likeDbContext.SaveChangesAsync(cancellationToken);

                    WritingInformationLog($"like like id: {post.Id} By user id {post.UserId}");
                }
            }
        }
예제 #4
0
        public override async Task <TotalLikesReply> GetImageLikes(PostIdRequest request, ServerCallContext context)
        {
            var cancellationToken = context.CancellationToken;

            (bool isExted, LikeModel post) = await ExistedPostByIdAsync(request, cancellationToken);

            if (isExted)
            {
                var likesOfPost = await SumAllLikesByPostId(post.PostId, cancellationToken);

                WritingInformationLog($"Total likes is: {likesOfPost} ");

                var selfUserLike = await LikeIdentity(post.PostId, post.UserId, cancellationToken);

                if (selfUserLike)
                {
                    return(new TotalLikesReply()
                    {
                        TotalCount = likesOfPost,
                        UserId = request.UserId,
                        Status = TotalLikesReply.Types.Status.Like
                    });
                }
                else
                {
                    return(new TotalLikesReply()
                    {
                        TotalCount = likesOfPost,
                        UserId = request.UserId,
                        Status = TotalLikesReply.Types.Status.UnLike
                    });
                }
            }
            else
            {
                WritingInformationLog($"Total likes is: 0 ");
                return(new TotalLikesReply()
                {
                    TotalCount = 0
                });
            }
        }
예제 #5
0
        public override async Task <Empty> AddImageLike(PostIdRequest request, ServerCallContext context)
        {
            var cancellationToken = context.CancellationToken;

            var(isExted, post) = await ExistedPostByIdAsync(request, cancellationToken);

            if (isExted)
            {
                if (post.IsLiked)
                {
                    await UnLike(request, cancellationToken);
                }
                else
                {
                    await Like(request, cancellationToken);
                }
            }
            else
            {
                await AddImageLike(request, cancellationToken);
            }

            return(new Empty());
        }
예제 #6
0
        private async Task <(bool isExted, LikeModel post)> ExistedPostByIdAsync(PostIdRequest post, CancellationToken cancellationToken)
        {
            var findPost = await FindPostByIdAsync(post.PostId, cancellationToken);

            return(findPost != null, findPost);
        }