// PUT api/Posts/5 public HttpResponseMessage PutPost(Post post) { _db.Posts.Remove(_db.Posts.Include(p => p.Tags).Include(p => p.Comments).SingleOrDefault(p => p.Id == post.Id)); post.Id = post.Id; UpdateTag(post); _db.Posts.Add(post); _db.SaveChanges(); return Request.CreateResponse(HttpStatusCode.OK); }
// POST api/Posts public HttpResponseMessage PostPost(Post post) { post.DateCreated = DateTime.Now; UpdateTag(post); post.Id = Guid.NewGuid(); _db.Posts.Add(post); _db.SaveChanges(); var response = Request.CreateResponse(HttpStatusCode.Created, post); response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = post.Id })); return response; }
// update or insert tag depend if tag exist or not private Post UpdateTag(Post post) { var tagList = post.Tags.ToList(); post.Tags.Clear(); foreach (var tag in tagList) { var tagText = tag.TagText.Trim(); if (!string.IsNullOrWhiteSpace(tagText)) { var tagDb = _db.Tags.FirstOrDefault(t => t.TagText == tagText); if (tagDb != null) { post.Tags.Add(tagDb); } else { post.Tags.Add(new Tag{ TagText = tagText }); } } } return post; }