/// <summary> /// Add a post. It also should take care of cateogries/tags. /// </summary> /// <param name="postEntity">The post entity.</param> /// <returns></returns> public int AddPost(PostEntity postEntity) { var postID = -1; try { // add the post postID = AddPostInternal(postEntity); // add the categories _categoryRepository.AddPostCategoryMapping(postEntity.Categories, postID); // add the tags if (postEntity.Tags != null) { _tagRepository.AddTagsForPost(postEntity.Tags, postID); } // return the id return(postID); } catch { // delete categories/tags if any if (postID > 0) { _categoryRepository.DeletePostCategoryMapping(postID); _tagRepository.DeleteTagsForPost(postID); } // delete the post DeletePost(postID); return(-1); } }