/// <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), }); }
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")); } }