public ActionResult <BlogPostView> AddBlogPost([FromBody] InsertBlogView ibv)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            BlogPost blogPost = new BlogPost();

            blogPost.Title       = ibv.Title;
            blogPost.Description = ibv.Description;
            blogPost.Body        = ibv.Body;

            foreach (string tag in ibv.TagList)
            {
                // If for some reason an non-existant an unknown tag is passed
                try
                {
                    PostTags pt = new PostTags {
                        BlogPostID = blogPost.BlogPostID, TagID = db.Tags.SingleOrDefault(t => t.TagName == tag).TagID
                    };
                    if (pt != null)
                    {
                        blogPost.PostTags.Add(pt);
                    }
                }
                catch {
                    continue;
                }
            }

            blogPost.CreatedAt      = DateTime.Now;
            blogPost.UpdatedAt      = blogPost.CreatedAt;
            blogPost.Favorited      = false;
            blogPost.FavoritesCount = 0;
            blogPost.Slug           = SlugGenerator(blogPost.Title);

            db.BlogPosts.Add(blogPost);
            db.SaveChanges();

            return(bpConverter.ToBlogPostView(blogPost));
        }
        public ActionResult <BlogPostView> UpdateBlogPost(string slug, [FromBody] InsertBlogView insertBlogView)
        {
            if (string.IsNullOrWhiteSpace(slug))
            {
                BadRequest();
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            BlogPost blogPost = db.BlogPosts.Include(bp => bp.PostTags).FirstOrDefault(bp => bp.Slug == slug);

            if (blogPost != null)
            {
                if (!string.IsNullOrWhiteSpace(insertBlogView.Body))
                {
                    blogPost.Body = insertBlogView.Body;
                }

                if (!string.IsNullOrWhiteSpace(insertBlogView.Description))
                {
                    blogPost.Description = insertBlogView.Description;
                }

                if (!string.IsNullOrWhiteSpace(insertBlogView.Title) && !blogPost.Title.Equals(insertBlogView.Title))
                {
                    blogPost.Title = insertBlogView.Title;
                    blogPost.Slug  = SlugGenerator(insertBlogView.Title);
                }

                blogPost.UpdatedAt = DateTime.Now;

                db.Entry(blogPost).State = EntityState.Modified;
                db.SaveChanges();

                return(bpConverter.ToBlogPostView(blogPost));
            }

            return(null);
        }