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)); } }