Exemplo n.º 1
0
        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());
        }
Exemplo n.º 2
0
        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");
        }
Exemplo n.º 3
0
        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");
        }
Exemplo n.º 4
0
        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));
        }