/// <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)); }
/// <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); }