コード例 #1
0
        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));
                        }
                    }
                }
            }
        }
コード例 #2
0
 /// <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));
     }
 }
コード例 #3
0
        /// <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));
        }
コード例 #4
0
        /// <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);
        }