Exemplo n.º 1
0
        /// <summary>
        /// This method inserts post.
        /// </summary>
        /// <param name="request">InsertPostRequest.</param>
        /// <param name="context">CurrentUserId</param>
        /// <returns>InsertPostResponse.</returns>
        public async Task <InsertPostResponse> InsertPost(InsertPostRequest request, string context)
        {
            var user = await _userManager.GetUser(context);

            if (!request.IsValid())
            {
                return(new InsertPostResponse()
                {
                    StatusCode = StatusCode.InvalidArgument, ErrorMessage = "Empty argument provided",
                });
            }

            Post post = new Post()
            {
                Title = request.Title, Body = request.Body, Author = user, Likes = new List <User>(), UpdatedAt = null,
            };

            var result = await _postManager.InsertPost(post);

            if (result == false)
            {
                return(new InsertPostResponse()
                {
                    StatusCode = StatusCode.Internal, ErrorMessage = "Internal Error! Couldn't insert post"
                });
            }

            var singleCached = await _cacheProcessor.UpdatePostStringAsync(post.Id, post);

            var cached = await _cacheProcessor.InsertUserPostStringAsync(user.Id, post);

            if (!cached || !singleCached)
            {
                return(new InsertPostResponse()
                {
                    StatusCode = StatusCode.Internal, ErrorMessage = "Internal Error! Couldn't Cache post"
                });
            }

            return(new InsertPostResponse()
            {
                StatusCode = StatusCode.Ok, Post = ConvertToPostResponse(post),
            });
        }
Exemplo n.º 2
0
        public async Task <ActionResult <InsertPostResponse> > InsertPost([FromBody] InsertPostRequest formData)
        {
            var context = HttpContext.User.Identity.Name;

            var result = await _postHandler.InsertPost(formData, context);

            switch (result.StatusCode)
            {
            case ContractsService.StatusCode.Unauthenticated:
                return(BadRequest(result.ErrorMessage));

            case ContractsService.StatusCode.Internal:
                return(BadRequest(result.ErrorMessage));

            case ContractsService.StatusCode.InvalidArgument:
                return(BadRequest(result.ErrorMessage));

            case ContractsService.StatusCode.Ok:
                return(result);

            default:
                return(BadRequest("Unknown error"));
            }
        }