Beispiel #1
0
        /// <summary>
        /// Gets the comment tree.
        /// </summary>
        /// <param name="contentId">The content id.</param>
        /// <returns>
        /// Root comments for content in tree format.
        /// </returns>
        public IEnumerable <CommentTreeViewModel> GetCommentTree(Guid contentId)
        {
            var result     = new List <CommentTreeViewModel>();
            var dictionary = new Dictionary <Guid, CommentTreeViewModel>();

            var dataTreeEnumerator = GetTreeData(contentId);

            CommentTreeViewModel currentTop = null;

            foreach (var current in dataTreeEnumerator)
            {
                if (current.ParentCommentId == null)
                {
                    currentTop = current;
                    result.Add(currentTop);
                }
                else
                {
                    dictionary[current.ParentCommentId.Value].AddChildNode(current);
                }
                dictionary.Add(current.Id, current);
            }

            dictionary.Clear();
            return(result.OrderBy(item => item.CreatedDate));
        }
Beispiel #2
0
 /// <summary>
 /// Adds to tree.
 /// </summary>
 /// <param name="currentNode">The current node.</param>
 /// <param name="current">The current.</param>
 /// <param name="level">The level.</param>
 /// <returns>True if success, otherwise false.</returns>
 private bool AddToTree(CommentTreeViewModel currentNode, CommentTreeViewModel current, int level)
 {
     if (level == 0)
     {
         if (currentNode.Id == current.ParentCommentId)
         {
             return(true);
         }
         return(false);
     }
     foreach (var childNode in currentNode.ChildNodes)
     {
         if (AddToTree(childNode, current, level - 1))
         {
             return(true);
         }
     }
     return(false);
 }