Exemple #1
0
        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);
        }