public async Task <IActionResult> AddBlogAsync([FromBody] BlogInputModel model) { if (!ModelState.IsValid) { return(BadRequest(new ApiError(400, HttpStatusCode.BadRequest.ToString(), "Data isn't valid."))); } if (!long.TryParse(this.User.Identity.Name, out long userId)) { return(BadRequest(new ApiError(400, HttpStatusCode.BadRequest.ToString(), "UserId isn't valid."))); } var userById = await _userRepository.GetUserByIdAsync(userId); if (userById == null) { return(NotFound(new ApiError(404, HttpStatusCode.NotFound.ToString(), "User wasn't found."))); } var blog = Blog.New(userById, model.Title, model.Subtitle, model.ImageUrl, model.Body); await _blogRepository.AddBlogAsync(blog); var blogOutputModel = Mapper.Map <BlogOutputModel>(blog); await _hubContext.Clients.All.BroadcastNotification(new BlogNotification { BlogId = blog.Id, BlogTitle = blog.Title, AuthorName = blog.User.FullName }); return(Ok(blogOutputModel)); }
public async Task PostBlogAsync(BlogPost blogPost, CancellationToken cancellationToken) { var blog = new Blog() { Id = Guid.NewGuid(), TimeStamp = DateTime.UtcNow, UserId = blogPost.UserId, Titel = blogPost.Titel, Text = blogPost.Text, Tags = blogPost.Tags }; await _blogRepository.AddBlogAsync(blog, cancellationToken); await _userRepository.AttachBlogToUserAsync(blog.UserId, blog.Id, cancellationToken); await _tagRepository.TryAddTagsAsync(blogPost.Tags, cancellationToken); }