/// <summary> /// Override of object.Equals that compares the Hansoft Unique ID of items. /// </summary> /// <param name="obj">The object to compare with.</param> /// <returns></returns> public override bool Equals(object obj) { HansoftItem other = obj as HansoftItem; if (obj != null) { return(uniqueID.m_ID == other.uniqueID.m_ID); } else { return(base.Equals(obj)); } }
void DoRenumber(HansoftItem parent, int level, string levelPath) { bool labelLevel = true; if (lOptionFound) { if (level <= explicitLabelLevels.Length) labelLevel = explicitLabelLevels[level - 1]; else labelLevel = false; } else if (iOptionFound) { if (level <= explicitIgnoreLevels.Length) labelLevel = !explicitIgnoreLevels[level - 1]; else labelLevel = true; } if (labelLevel) { int rank = 1; foreach (Task child in parent.Children) { string rankString; if (!hierarchical) rankString = rank.ToString(); else rankString = levelPath + rank.ToString(); if (child.GetCustomColumnValue(rankColumn).ToString() != rankString) child.SetCustomColumnValue(rankColumn, rankString); rank += 1; } } else { foreach (Task child in parent.Children) { if (child.GetCustomColumnValue(rankColumn).ToString() != string.Empty) child.SetCustomColumnValue(rankColumn, string.Empty); } } int rank2 = 1; foreach (Task child in parent.Children) { string newLevelPath = levelPath + rank2.ToString() + "."; DoRenumber(child, level + 1, newLevelPath); rank2 += 1; } }
private void CloneChildTasks(HansoftItem sourceParent, HansoftItem targetParent, ProjectView targetProject, HPMProjectCustomColumns customColumns) { Task newTask = null; foreach (Task task in sourceParent.Children) { HPMTaskCreateUnifiedReference prevRefID = new HPMTaskCreateUnifiedReference(); if (newTask == null) prevRefID.m_RefID = -1; else prevRefID.m_RefID = newTask.UniqueTaskID; prevRefID.m_bLocalID = false; HPMTaskCreateUnifiedReference prevWorkPrioRefID = new HPMTaskCreateUnifiedReference(); prevWorkPrioRefID.m_RefID = -2; prevWorkPrioRefID.m_bLocalID = false; HPMTaskCreateUnifiedReference[] parentRefIds = new HPMTaskCreateUnifiedReference[1]; parentRefIds[0] = new HPMTaskCreateUnifiedReference(); parentRefIds[0].m_RefID = targetParent.Id; // This should be a taskref, which it should be parentRefIds[0].m_bLocalID = false; HPMTaskCreateUnified createTaskData = new HPMTaskCreateUnified(); createTaskData.m_Tasks = new HPMTaskCreateUnifiedEntry[1]; createTaskData.m_Tasks[0] = new HPMTaskCreateUnifiedEntry(); createTaskData.m_Tasks[0].m_bIsProxy = false; createTaskData.m_Tasks[0].m_LocalID = -1; createTaskData.m_Tasks[0].m_ParentRefIDs = parentRefIds; createTaskData.m_Tasks[0].m_PreviousRefID = prevRefID; createTaskData.m_Tasks[0].m_PreviousWorkPrioRefID = prevWorkPrioRefID; createTaskData.m_Tasks[0].m_NonProxy_ReuseID = 0; createTaskData.m_Tasks[0].m_TaskLockedType = Session.TaskGetLockedType(task.UniqueTaskID); createTaskData.m_Tasks[0].m_TaskType = Session.TaskGetType(task.UniqueTaskID); HPMChangeCallbackData_TaskCreateUnified createdData = Session.TaskCreateUnifiedBlock(targetProject.UniqueID, createTaskData); if (createdData.m_Tasks.Length == 1) { newTask = Task.GetTask(createdData.m_Tasks[0].m_TaskRefID); newTask.Category = task.Category; newTask.Confidence = task.Confidence; newTask.DetailedDescription = task.DetailedDescription; newTask.EstimatedDays = task.EstimatedDays; newTask.Hyperlink = task.Hyperlink; newTask.Name = task.Name; newTask.Points = task.Points; newTask.Priority = task.Priority; newTask.Risk = task.Risk; newTask.Severity = task.Severity; newTask.Status = task.Status; newTask.WorkRemaining = task.WorkRemaining; Session.TaskSetFullyCreated(newTask.UniqueTaskID); foreach (HPMProjectCustomColumnsColumn column in customColumns.m_ShowingColumns) newTask.SetCustomColumnValue(column.m_Name, task.GetCustomColumnValue(column.m_Name)); CloneChildTasks(task, newTask, targetProject, customColumns); } } }
private void CloneChildTasks(HansoftItem sourceParent, HansoftItem targetParent, ProjectView targetProject, HPMProjectCustomColumns customColumns) { Task newTask = null; foreach (Task task in sourceParent.Children) { HPMTaskCreateUnifiedReference prevRefID = new HPMTaskCreateUnifiedReference(); if (newTask == null) { prevRefID.m_RefID = -1; } else { prevRefID.m_RefID = newTask.UniqueTaskID; } prevRefID.m_bLocalID = false; HPMTaskCreateUnifiedReference prevWorkPrioRefID = new HPMTaskCreateUnifiedReference(); prevWorkPrioRefID.m_RefID = -2; prevWorkPrioRefID.m_bLocalID = false; HPMTaskCreateUnifiedReference[] parentRefIds = new HPMTaskCreateUnifiedReference[1]; parentRefIds[0] = new HPMTaskCreateUnifiedReference(); parentRefIds[0].m_RefID = targetParent.Id; // This should be a taskref, which it should be parentRefIds[0].m_bLocalID = false; HPMTaskCreateUnified createTaskData = new HPMTaskCreateUnified(); createTaskData.m_Tasks = new HPMTaskCreateUnifiedEntry[1]; createTaskData.m_Tasks[0] = new HPMTaskCreateUnifiedEntry(); createTaskData.m_Tasks[0].m_bIsProxy = false; createTaskData.m_Tasks[0].m_LocalID = -1; createTaskData.m_Tasks[0].m_ParentRefIDs = parentRefIds; createTaskData.m_Tasks[0].m_PreviousRefID = prevRefID; createTaskData.m_Tasks[0].m_PreviousWorkPrioRefID = prevWorkPrioRefID; createTaskData.m_Tasks[0].m_NonProxy_ReuseID = 0; createTaskData.m_Tasks[0].m_TaskLockedType = Session.TaskGetLockedType(task.UniqueTaskID); createTaskData.m_Tasks[0].m_TaskType = Session.TaskGetType(task.UniqueTaskID); HPMChangeCallbackData_TaskCreateUnified createdData = Session.TaskCreateUnifiedBlock(targetProject.UniqueID, createTaskData); if (createdData.m_Tasks.Length == 1) { newTask = Task.GetTask(createdData.m_Tasks[0].m_TaskRefID); newTask.Category = task.Category; newTask.Confidence = task.Confidence; newTask.DetailedDescription = task.DetailedDescription; newTask.EstimatedDays = task.EstimatedDays; newTask.Hyperlink = task.Hyperlink; newTask.Name = task.Name; newTask.Points = task.Points; newTask.Priority = task.Priority; newTask.Risk = task.Risk; newTask.Severity = task.Severity; newTask.Status = task.Status; newTask.WorkRemaining = task.WorkRemaining; Session.TaskSetFullyCreated(newTask.UniqueTaskID); foreach (HPMProjectCustomColumnsColumn column in customColumns.m_ShowingColumns) { newTask.SetCustomColumnValue(column.m_Name, task.GetCustomColumnValue(column.m_Name)); } CloneChildTasks(task, newTask, targetProject, customColumns); } } }
private static bool hasParentHeader(HansoftItem current_task, String parentFolder) { HansoftItem parent = current_task.Parent; if (current_task == null || parent == null) { return false; } if (parent.Name.ToLower() == "product backlog" && current_task.Name.ToLower() == parentFolder.ToLower()) { return true; } else { return hasParentHeader(parent, parentFolder); } }