public async Task <ActionResult <PostForReturnDto> > CreatePost([FromBody] PostToCreateDto postToCreateDto) { try { var userFromRepo = await _repo.GetUserById(postToCreateDto.UserId); if (userFromRepo == null) { return(NotFound($"User with the id {postToCreateDto.UserId} does not exist.")); } Post post = new Post() { Text = postToCreateDto.Text, Created = DateTime.Now, User = userFromRepo }; await _repo.Create(post); if (await _repo.Save()) { return(CreatedAtAction(nameof(GetPostById), new { id = post.Id }, _mapper.Map <PostForReturnDto>(post))); } } catch (Exception e) { return(this.StatusCode(StatusCodes.Status500InternalServerError, $"Failed to create the post. Exception thrown when attempting to add data to the database: {e.Message}")); } return(BadRequest()); }
public async Task <IActionResult> Edit([FromForm] PostToCreateDto postToUpdateDto) { if (postToUpdateDto.UserId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value)) { return(Unauthorized()); } var postFromRepo = await _postRepo.GetPost(postToUpdateDto.Id); if (postFromRepo == null) { return(BadRequest("Post was not found")); } if (postToUpdateDto.ImageFile != null) { if (postToUpdateDto.ImageFile.Length > 0) { postFromRepo.ImageUrl = ImageToBase64(postToUpdateDto.ImageFile); } } _mapper.Map(postToUpdateDto, postFromRepo); if (await _commonRepo.SaveAll()) { return(NoContent()); } throw new Exception("Couldn't edit post"); }
public async Task <IActionResult> Create([FromForm] PostToCreateDto postToCreateDto) { var userId = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value); var post = _mapper.Map <Post>(postToCreateDto); post.CreatedOn = DateTime.Now; post.UserId = userId; if (postToCreateDto.ImageFile.Length == 0) { return(BadRequest("No image was selected")); } post.ImageUrl = ImageToBase64(postToCreateDto.ImageFile); _commonRepo.Add(post); if (await _commonRepo.SaveAll()) { var postToReturn = _mapper.Map <PostToReturnDto>(post); return(CreatedAtRoute("GetPost", new { id = post.Id }, postToReturn)); } throw new Exception("Couldn't create post"); }
public async Task CreatePost_UsingInvalidUserId_ReturnsBadRequest() { // Arrange PostToCreateDto post = new PostToCreateDto { Text = "Test." }; _mockRepo.Setup(repo => repo.GetUserById(-1)); // Act var response = await _postController.CreatePost(post); // Assert Assert.IsAssignableFrom <BadRequestObjectResult>(response); }
public IActionResult CreatePost(int threadId, [FromBody] PostToCreateDto post) { if (!_threadRepo.ThreadExists(threadId)) { return(BadRequest()); } var mappedPost = _mapper.Map <Post>(post); mappedPost.Thread = _threadRepo.GetThread(threadId); _postRepo.AddPost(mappedPost); if (!_postRepo.Save()) { return(StatusCode(500)); } var eventMessage = new PostUpdateIntegrationEvent(threadId); _eventBus.Publish(eventMessage); return(StatusCode(201)); }