示例#1
0
        /// <summary>
        /// 遞迴產生Node
        /// </summary>
        /// <param name="vo"></param>
        /// <param name="node"></param>
        public void SetNode(List <FunctionMenuVO> vo, FunctionMenuNode node)
        {
            var nodeData = node;
            var nextData = vo.Where(o => o.Parent == nodeData.Val.FunctionID).ToList();

            if (nextData.Any())
            {
                node.Next = new List <FunctionMenuNode>();
            }
            else
            {
                return;
            }

            for (int i = 0; i < nextData.Count(); i++)
            {
                node.Next.Add(new FunctionMenuNode(nextData[i]));
                vo.Remove(nextData[i]);
                SetNode(vo, node.Next[i]);
            }
        }
示例#2
0
        /// <summary>
        /// 取得MenuNode
        /// </summary>
        /// <param name="userID"></param>
        /// <returns></returns>
        public List <FunctionMenuNode> GetFunctionToNode(string userID)
        {
            var menuData = Utility.MigrationIEnumerable <FunctionMenuDTO, FunctionMenuVO>(_functionRepo.GetMenuData(userID));

            var topData = menuData.Where(o => o.Parent == 0).ToList();

            var NotTopData = menuData.Where(o => o.Parent != 0).ToList();

            var result = new List <FunctionMenuNode>()
            {
            };

            foreach (var item in topData)
            {
                var node = new FunctionMenuNode(item)
                {
                };
                result.Add(node);
                SetNode(NotTopData, node);
            }

            return(result);
        }
示例#3
0
        public void SetNodeTest()
        {
            #region arrange

            List <FunctionMenuVO> reFunctionVO = new List <FunctionMenuVO>()
            {
                new FunctionMenuVO()
                {
                    FunctionID = 1, Url = "Role/RoleManagement", Parent = 0, Title = "角色管理"
                },
                new FunctionMenuVO()
                {
                    FunctionID = 2, Url = "Role/RoleAddEditDelete", Parent = 1, Title = "編輯角色"
                },
                new FunctionMenuVO()
                {
                    FunctionID = 8, Url = "Role/RoleUserEdit", Parent = 1, Title = "編輯角色使用者"
                }
            };

            List <FunctionMenuNode> reFunctionMenuNodeList = new List <FunctionMenuNode>()
            {
                new FunctionMenuNode(new FunctionMenuVO()
                {
                    FunctionID = 1, Url = "Role/RoleManagement", Parent = 0, Title = "角色管理"
                })
                {
                    Next = new List <FunctionMenuNode>()
                    {
                        new FunctionMenuNode(new FunctionMenuVO()
                        {
                            FunctionID = 2, Url = "Role/RoleAddEditDelete", Parent = 1, Title = "編輯角色"
                        }),
                        new FunctionMenuNode(new FunctionMenuVO()
                        {
                            FunctionID = 8, Url = "Role/RoleUserEdit", Parent = 1, Title = "編輯角色使用者"
                        })
                    }
                }
            };

            var result = new List <FunctionMenuNode>()
            {
            };

            var node = new FunctionMenuNode(reFunctionVO[0])
            {
            };

            result.Add(node);

            #endregion

            #region act

            _target.SetNode(reFunctionVO.Where(o => o.Parent != 0).ToList(), node);

            #endregion

            #region assert

            for (int i = 0; i < result.Count; i++)
            {
                Assert.AreEqual(result[i].Val.FunctionID, reFunctionMenuNodeList[i].Val.FunctionID);
                Assert.AreEqual(result[i].Val.Url, reFunctionMenuNodeList[i].Val.Url);
                Assert.AreEqual(result[i].Val.Parent, reFunctionMenuNodeList[i].Val.Parent);
                Assert.AreEqual(result[i].Val.Title, reFunctionMenuNodeList[i].Val.Title);
            }

            for (int i = 0; i < result[0].Next.Count; i++)
            {
                Assert.AreEqual(result[0].Next[i].Val.FunctionID, reFunctionMenuNodeList[0].Next[i].Val.FunctionID);
                Assert.AreEqual(result[0].Next[i].Val.Url, reFunctionMenuNodeList[0].Next[i].Val.Url);
                Assert.AreEqual(result[0].Next[i].Val.Parent, reFunctionMenuNodeList[0].Next[i].Val.Parent);
                Assert.AreEqual(result[0].Next[i].Val.Title, reFunctionMenuNodeList[0].Next[i].Val.Title);
            }

            #endregion
        }