Esempio n. 1
0
 public int BuildTree(EmployeeTreeNode node)
 {
     foreach (EmployeeTreeNode childNode in node.ChildNodes)
     {
         BuildTree(childNode);
     }
     return(1);
 }
Esempio n. 2
0
 public static void BuildTree(EmployeeTreeNode node)
 {
     foreach (EmployeeTreeNode childNode in node.ChildNodes)
     {
         if (childNode.IsBuilt == false)
         {
             BuildTree(childNode);
             childNode.IsBuilt = true;
         }
     }
 }
Esempio n. 3
0
 public static int SumTree(EmployeeTreeNode node)
 {
     foreach (EmployeeTreeNode childNode in node.ChildNodes)
     {
         if (childNode.IsSummed == false)
         {
             SumTree(childNode);
             childNode.IsSummed = true;
         }
     }
     salary += node.Employee.Salary;
     return(salary);
 }
Esempio n. 4
0
        private static void ProcessNode(EmployeeTreeNode node, List <EmployeeTreeNode> nodes)
        {
            EmployeeTreeNode parentNode = nodes.DefaultIfEmpty(null).FirstOrDefault(n => n.Employee.ID == node.Employee.ManagerID);

            if (null != parentNode)
            {
                if (!parentNode.IsProcessed)
                {
                    ProcessNode(parentNode, nodes);
                }

                node.IsProcessed = true;
                node.Level       = parentNode.Level + 1;
                parentNode.ChildNodes.Add(node);
            }
        }
Esempio n. 5
0
        public static EmployeeTreeNode GetEmployeeTreeNode(List <Employee> employees)
        {
            EmployeeTreeNode result = new EmployeeTreeNode();

            result.IsProcessed = false;

            List <EmployeeTreeNode> nodes = new List <EmployeeTreeNode>();

            foreach (Employee emp in employees)
            {
                nodes.Add(new EmployeeTreeNode(emp, false));
            }

            foreach (EmployeeTreeNode empNode in nodes)
            {
                if (empNode.IsProcessed)
                {
                    continue;
                }
                else
                {
                    if (null == empNode.Employee.ManagerID)
                    {
                        result = empNode;
                        empNode.IsProcessed = true;
                        empNode.Level       = 0;
                    }
                    else
                    {
                        ProcessNode(empNode, nodes);
                    }
                }
            }

            if (result.ChildNodes.Count == 0)
            {
                result.ChildNodes.AddRange(nodes);
            }

            return(result);
        }
Esempio n. 6
0
        public static EmployeeTreeNode FindNode(EmployeeTreeNode rootnode, string my_name)
        {
            var foundNode = rootnode.GetNodeAndDescendants().FirstOrDefault(node => node.Employee.ID.Contains(my_name));

            return(foundNode);
        }