/// <summary> /// Metod koj go vraka roditelot na dinamickoto drvo /// </summary> /// <returns>jazel - INBOTreeNode</returns> public INBOTreeNode GetParent() { SessionTree tree = SessionTree.GetSessionInstance(); if (tree.GetParentMap.ContainsKey(this)) { return(tree.GetParent(this)); } tree.GetParentMap.Add(this, this.WebPage1); SessionTree.UpdateSessionInstance(tree); return(this.WebPage1); }
/// <summary> /// Metod so koj se vraka nova instanca od klasata WebPage /// za specificiran jazel od drvoto i polnenje na /// soodvetniot jazel /// </summary> /// <param name="nodeId"></param> /// <returns></returns> public INBOTreeNode GetById(int nodeId) { SessionTree tree = SessionTree.GetSessionInstance(); if (tree.GetByIdMap.ContainsKey(nodeId)) { return(tree.GetById(nodeId)); } WebPage page = WebPage.Get(nodeId); tree.GetByIdMap.Add(nodeId, page); SessionTree.UpdateSessionInstance(tree); return(page); }
/// <summary> /// Metod vraka lista od jazli na dinamickoto drvo /// so elementi - koreni na konkreten korisnik (userID) /// </summary> /// <param name="userId"></param> /// <returns>numerirana lista od jazli (IEnumerable(INBOTreeNode))</returns> public IEnumerable <INBOTreeNode> GetRoots(int userId) { SessionTree tree = SessionTree.GetSessionInstance(); if (tree.GetRootsMap.ContainsKey(this)) { return(tree.GetRoots(this)); } List <WebPage> _roots = (Select().Where(w => w.ParentID == null).ToList()); List <INBOTreeNode> roots = new List <INBOTreeNode>(); foreach (WebPage page in _roots) { roots.Add((INBOTreeNode)page); } List <INBOTreeNode> result = new List <INBOTreeNode>(); foreach (WebPage root in roots) { foreach (WebPage page in root.WebPages) { if (page.RelativeUrl == "#" && page.HasChildren(userId)) { result.Add(root); break; } if (page.RelativeUrl != "#" && UsersWebPage.EntityExists(userId, page.ID)) { result.Add(root); break; } } } tree.GetRootsMap.Add(this, result); SessionTree.UpdateSessionInstance(tree); return(result); }