public bool AddTaskNode(HierarchyObject taskRelations, TaskObject taskToAdd, LevelObject levelToAddTo) { bool added = false; if (_allLevels.Count > 0) { foreach (LevelObject item in _allLevels) { if (item.UniqueId.Equals(levelToAddTo.UniqueId)) { bool valid = true; foreach (HierarchyTaskObject items in item.LevelCollection) { if (taskRelations.UniqueId == items.hierarchyObj.UniqueId && taskToAdd.UniqueId == items.taskObj.UniqueId) { valid = false; } } if(valid == true) { HierarchyTaskObject TO = new HierarchyTaskObject(Guid.NewGuid().ToString(), taskRelations.Name+taskToAdd.Name); TO.hierarchyObj = taskRelations; TO.taskObj = taskToAdd; AddToLevel(levelToAddTo, TO); added = true; break; } } } } return added; }
private static void AddToLevel(LevelObject levelToAddTo, HierarchyTaskObject TO) { levelToAddTo.VisibleLevelCollection.Add(TO); levelToAddTo.LevelCollection.Add(TO); }
//check if attempted parent reconfiguration is valid public static bool ValidParentMove(HierarchyTaskObject change, string newParentid) { bool valid = false; int levelWithChange = 0; foreach (LevelObject level in _appDataSource.NodeManager.GetAllLevels) { bool changedValue = false; foreach (HierarchyTaskObject item in level.LevelCollection) { if (item.hierarchyObj.UniqueId.Equals(change.hierarchyObj.UniqueId)) { levelWithChange = Convert.ToInt32(level.Name); changedValue = true; break; } } if (changedValue == true) { break; } } for (int i = 0; i < levelWithChange + 1; i++) { bool found = false; //count through higher levels and check foreach (HierarchyTaskObject parentItem in _appDataSource.NodeManager.GetAllLevels[i].LevelCollection) { if (parentItem.hierarchyObj.CurrentNode.UniqueId.Equals(newParentid)) { valid = true; found = true; break; } } if (found) { break; } } return valid; }
public bool RemoveTaskNode(HierarchyTaskObject taskToRemove) { bool removed = false; if (_allLevels.Count > 0) { foreach (LevelObject element in _allLevels) { foreach (HierarchyTaskObject item in element.LevelCollection) { if (taskToRemove.hierarchyObj.UniqueId == item.hierarchyObj.UniqueId && taskToRemove.taskObj.UniqueId == item.taskObj.UniqueId) { //element.LevelCollection.Remove(taskToRemove); taskToRemove.taskObj.Deleted = true; UpdateVisibility(); removed = true; break; } } foreach (HierarchyTaskObject item in element.LevelCollection) { if (item.hierarchyObj.Parent != null) { if (item.hierarchyObj.Parent.UniqueId.Equals(taskToRemove.hierarchyObj.CurrentNode.UniqueId)) { item.hierarchyObj.Parent = taskToRemove.hierarchyObj.Parent; } else { item.hierarchyObj.Parent = null; } } } } } return removed; }
public static ObservableCollection<TaskObject> GetChildrenOfNode(HierarchyTaskObject nodeToGetChildrenOf) { return nodeToGetChildrenOf.hierarchyObj.Children; }