private static Task CreateTask(HPMUniqueID uniqueID) { HPMUniqueID uniqueTaskID = SdkSession.TaskRefGetTask(uniqueID); EHPMTaskLockedType lockedType = SdkSession.TaskGetLockedType(uniqueTaskID); switch (lockedType) { case EHPMTaskLockedType.BacklogItem: if (SdkSession.UtilIsIDBacklogProject(SdkSession.TaskGetContainer(uniqueTaskID))) { if (SdkSession.TaskGetMainReference(uniqueTaskID).m_ID == uniqueID.m_ID) { return(ProductBacklogItem.GetProductBacklogItem(uniqueID, uniqueTaskID)); } else { return(ProductBacklogItemInSprint.GetProductBacklogItemInSprint(uniqueID, uniqueTaskID)); } } else { return(SprintBacklogItem.GetSprintBacklogItem(uniqueID, uniqueTaskID)); } case EHPMTaskLockedType.QABug: return(Bug.GetBug(uniqueID, uniqueTaskID)); case EHPMTaskLockedType.SprintItem: return(Sprint.GetSprint(uniqueID, uniqueTaskID)); case EHPMTaskLockedType.Normal: default: if (SdkSession.TaskGetForceSubProject(uniqueTaskID)) { return(SubProject.GetSubProject(uniqueID, uniqueTaskID)); } else { EHPMTaskType taskType = SdkSession.TaskGetType(uniqueTaskID); switch (taskType) { case EHPMTaskType.Milestone: return(Release.GetRelease(uniqueID, uniqueTaskID)); case EHPMTaskType.Planned: default: if (SdkSession.UtilIsIDBacklogProject(SdkSession.TaskGetContainer(uniqueTaskID))) { return(ProductBacklogItemInSchedule.GetProductBacklogItemInSchedule(uniqueID, uniqueTaskID)); } else { return(ScheduledTask.GetScheduledTask(uniqueID, uniqueTaskID)); } } } } }
/// <summary> /// Factory method for creating a Task (subclass of). /// </summary> /// <param name="uniqueID">The Task ID or TaskRef ID that a Task shuld be created for</param> /// <param name="viewType">The view that the task appears in (primarily important for product backlog items which can appear in mutiple views).</param> /// <returns>A concrete task acting as a wrapper to access the Hansoft API for the task in question.</returns> internal static Task GetTask(HPMUniqueID uniqueID, EHPMReportViewType viewType) { if ((viewType == EHPMReportViewType.ScheduleMainProject || viewType == EHPMReportViewType.AgileMainProject) && SdkSession.UtilIsIDTask(uniqueID) && SdkSession.UtilIsIDBacklogProject(SdkSession.TaskGetContainer(uniqueID))) { return(GetTask(SdkSession.TaskGetProxy(uniqueID))); } else { return(GetTask(uniqueID)); } }
/// <summary> /// Factory method for creating a Task (subclass of). /// </summary> /// <param name="uniqueID">The Task ID or TaskRef ID that a Task shuld be created for. If a Task ID is given then the MainRef of the task will be used to determine which view is applicable.</param> /// <returns>A concrete task acting as a wrapper to access the Hansoft API for the task in question.</returns> public static Task GetTask(HPMUniqueID uniqueID) { HPMUniqueID refID; if (SdkSession.UtilIsIDTask(uniqueID)) { refID = SdkSession.TaskGetMainReference(uniqueID); } else { refID = uniqueID; } return(CreateTask(refID)); }
/// <summary> /// Sets the resource assignments for this task. Assumes 100% allocation for each resource /// </summary> /// <param name="userNames">The list of user names as they are displayed in the Hansoft client. Assumes strings.</param> public void SetResourceAssignmentsFromUserStrings(IList userNames) { Project project = Project.GetProject(MainProjectID); List <Resource> resources = new List <Resource>(); foreach (string rs in userNames) { string trimmed = rs.Trim(); User user = project.Members.Find(u => u.Name == trimmed); if (user != null) { resources.Add(user); } else { User groupMember = project.Members.Find(u => u.Groups.Find(g => g.Name == trimmed) != null); if (groupMember != null) { Group group = groupMember.Groups.Find(g => g.Name == trimmed); resources.Add(group); } } } HPMTaskResourceAllocation allocation = new HPMTaskResourceAllocation(); allocation.m_Resources = new HPMTaskResourceAllocationResource[resources.Count]; for (int i = 0; i < resources.Count; ++i) { allocation.m_Resources[i] = new HPMTaskResourceAllocationResource(); allocation.m_Resources[i].m_PercentAllocated = 100; allocation.m_Resources[i].m_ResourceID = resources.ElementAt(i).UniqueID; } HPMUniqueID taskID = SdkSession.TaskRefGetTask(UniqueID); Session.TaskSetResourceAllocation(taskID, allocation, true, EHPMTaskSetStatusFlag.None); }