public IHttpActionResult PutBlogPost(string slug, dynamic blogPost) { if (ctx.blogPost.Where(x => x.slug == slug).SingleOrDefault() == null) { return(BadRequest("Post doesn't exists")); } blogPostVM model = JsonConvert.DeserializeObject <blogPostVM>(blogPost.blogPost.ToString()); BlogPost singlePost = ctx.blogPost.Where(x => x.slug == slug).FirstOrDefault(); singlePost.slug = String.IsNullOrEmpty(model.title) ? singlePost.slug : helperClasses.createSlug(model.title); singlePost.title = String.IsNullOrEmpty(model.title) ? singlePost.title : model.title; singlePost.body = String.IsNullOrEmpty(model.body) ? singlePost.body : model.body; singlePost.description = String.IsNullOrEmpty(model.description) ? singlePost.description : model.description; singlePost.updatedAt = DateTime.Now; ctx.SaveChanges(); return(Ok(viewPosts(singlePost.slug))); }
public IHttpActionResult PostNewPost(dynamic blogPost) { // deserializing json object into a view model blogPostVM model = JsonConvert.DeserializeObject <blogPostVM>(blogPost.blogPost.ToString()); //function in "blogPostVM" class that checks if everthing is ok if (model.CheckRequired()) { return(BadRequest("Invalid data")); } //helperClass is a static class that contains functions that will manuiplate with data and return things we need string newSlug = helperClasses.createSlug(model.title); if (ctx.blogPost.Where(x => x.slug == newSlug).SingleOrDefault() != null) { return(BadRequest("Post already exists")); } //creating a new list of tags List <Tags> tagList = new List <Tags>(); //adding tags to "Tags" table (if they don't already exist) foreach (string s in blogPost.blogPost.tagList) { Tags tagFromDb = ctx.tag.Where(x => x.tagName == s).SingleOrDefault(); if (tagFromDb == null) { Tags tag = new Tags(); tag.slug = helperClasses.createSlug(s); tag.tagName = s; tag.createdAt = DateTime.Now; tag.updatedAt = DateTime.Now; ctx.tag.Add(tag); ctx.SaveChanges(); tagList.Add(tag); } else { tagList.Add(tagFromDb); } } //creating new post BlogPost newPost = new BlogPost(); newPost.slug = helperClasses.createSlug(model.title); newPost.title = model.title; newPost.description = model.description; newPost.body = model.body; newPost.createdAt = DateTime.Now; newPost.updatedAt = DateTime.Now; ctx.blogPost.Add(newPost); ctx.SaveChanges(); //joining tags to post in "BlogPostTags" table (many to many relationship with composite primary key) foreach (Tags tag in tagList) { BlogPostTags blogPostTag = new BlogPostTags(); blogPostTag.PostId = newPost.Id; blogPostTag.TagId = tag.Id; blogPostTag.createdAt = DateTime.Now; blogPostTag.updatedAt = DateTime.Now; ctx.blogPostTag.Add(blogPostTag); } ctx.SaveChanges(); return(Ok(viewPosts(newPost.slug))); }