Exemplo n.º 1
0
        public async Task DiscardAsync(IPlan plan)
        {
#endif
            var planAsNode = (DefaultNode)plan;
            planAsNode.Discarded = true;
            foreach (var plan1 in planAsNode.PlannedCreatedNodes)
            {
                var toCreate = (DefaultNode)plan1;
                var parent   = toCreate.ParentPlan;
                if (parent != null)
                {
                    _hierarchy.RemoveChildNode(parent, toCreate);
                }
                else
                {
                    _hierarchy.RemoveRootNode(toCreate);
                }
                toCreate.Parent    = null;
                toCreate.Discarded = true;
            }
            var nodeParent = planAsNode.ParentPlan;
            if (nodeParent != null)
            {
                _hierarchy.RemoveChildNode(nodeParent, planAsNode);
            }
            else
            {
                _hierarchy.RemoveRootNode(planAsNode);
            }

            if (plan.DiscardOnResolve.Count > 0)
            {
                foreach (var child in plan.DiscardOnResolve.ToList())
                {
                    _hierarchy.RemoveNode((INode)child);
                }
            }
        }