public void ProcessEditedBlogPost(BlogPost editedBlogPost) { editedBlogPost.EditDate = DateTime.Now; _blogPostRepo.EditBlogPost(editedBlogPost); int blogPostID = editedBlogPost.BlogPostId; // remove all existing Categories from blog post _blogCategoryRepo.DeleteCategoryFromBlogPost(blogPostID); // add selected categories to this blog post foreach (var category in editedBlogPost.AssignedCategories) { _blogCategoryRepo.AddCategoryToBlog(blogPostID, category.CategoryId); } List <string> justTagNames = new List <string>(); foreach (var tag in editedBlogPost.AssignedTags) { justTagNames.Add(tag.TagName); } // add newly created tag names to tag repo, assigns them valid tagIDs, returns list of valid Tag objects editedBlogPost.AssignedTags = _tagRepo.AddAllTags(justTagNames); // remove all assigned tags to this blogPost _blogTagRepo.DeleteTagFromBlog(blogPostID); // assign newly created Tags to this blog post foreach (var tag in editedBlogPost.AssignedTags) { _blogTagRepo.AddTagToBlog(blogPostID, tag.TagId); } }