Exemple #1
0
        protected virtual void SavePostTags(Post post, string[] postTags)
        {
            if (post == null)
            {
                throw new ArgumentNullException("post");
            }

            //post tags
            var existingPostTags = post.PostTags.ToList();
            var postTagsToRemove = new List <PostTag>();

            foreach (var existingPostTag in existingPostTags)
            {
                var found = false;
                foreach (var newPostTag in postTags)
                {
                    if (existingPostTag.Name.Equals(newPostTag, StringComparison.InvariantCultureIgnoreCase))
                    {
                        found = true;
                        break;
                    }
                }
                if (!found)
                {
                    postTagsToRemove.Add(existingPostTag);
                }
            }
            foreach (var postTag in postTagsToRemove)
            {
                post.PostTags.Remove(postTag);
                _postService.UpdatePost(post);
            }
            foreach (var postTagName in postTags)
            {
                PostTag postTag;
                var     postTag2 = _postTagService.GetPostTagByName(postTagName);
                if (postTag2 == null)
                {
                    //add new post tag
                    postTag = new PostTag
                    {
                        Name = postTagName
                    };
                    _postTagService.InsertPostTag(postTag);
                }
                else
                {
                    postTag = postTag2;
                }
                if (!post.PostTagExists(postTag.Id))
                {
                    post.PostTags.Add(postTag);
                    _postService.UpdatePost(post);
                }
            }
        }