Exemplo n.º 1
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);
        }
Exemplo n.º 2
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);
 }
        private void UpdateColumn(HPMUniqueID projectID, HPMUniqueID taskID, HPMUInt32 colType, string newValue, List<string> multiselections)
        {
            try
            {
                m_VirtSession.ResourceImpersonate(m_ResourceID, EHPMDataHistoryClientOrigin.CustomSDK, m_UpdatedFromWeb);
                switch (colType)
                {
                    case (uint)EHPMProjectDefaultColumn.Risk:
                        {
                            m_VirtSession.TaskSetRisk(taskID, (EHPMTaskRisk)Convert.ToInt32(newValue));
                        }
                        break;
                    case (uint)EHPMProjectDefaultColumn.Confidence:
                        {
                            m_VirtSession.TaskSetConfidence(taskID, (EHPMTaskConfidence)Convert.ToInt32(newValue));
                        }
                        break;
                    case (uint)EHPMProjectDefaultColumn.Severity:
                        {
                            m_VirtSession.TaskSetSeverity(taskID, (EHPMTaskSeverity)Convert.ToInt32(newValue));
                        }
                        break;

                    case (uint)EHPMProjectDefaultColumn.BugPriority:
                        {
                            m_VirtSession.TaskSetAgilePriorityCategory(taskID, (EHPMTaskAgilePriorityCategory)Convert.ToInt32(newValue));
                        }
                        break;
                    case (uint)EHPMProjectDefaultColumn.ItemName:
                        {
                            m_VirtSession.TaskSetDescription(taskID, newValue);
                        }
                        break;
                    case (uint)EHPMProjectDefaultColumn.CommittedToSprint:
                        {
                            HPMUniqueID linkedToSprintID = new HPMUniqueID(Convert.ToInt32(newValue));

                            HPMUniqueID taskrefid = m_VirtSession.TaskGetMainReference(linkedToSprintID);

                            m_VirtSession.TaskSetLinkedToSprint(taskID, taskrefid);
                        }
                        break;
                    case (uint)EHPMProjectDefaultColumn.MilestoneTag:
                        {
                            HPMUniqueID linkedToMilestoneID = new HPMUniqueID(Convert.ToInt32(newValue));
                            HPMUniqueID taskrefid = m_VirtSession.TaskGetMainReference(linkedToMilestoneID);

                            HPMTaskLinkedToMilestones milestones = new HPMTaskLinkedToMilestones();
                            Array.Resize(ref milestones.m_Milestones, 1);
                            milestones.m_Milestones[0] = taskrefid;
                            m_VirtSession.TaskSetLinkedToMilestones(taskID, milestones);
                        }
                        break;
                    case (uint)EHPMProjectDefaultColumn.Hyperlink:
                        {
                            m_VirtSession.TaskSetHyperlink(taskID, newValue);
                        }
                        break;
                    case (uint)EHPMProjectDefaultColumn.DetailedDescription:
                        {
                            m_VirtSession.TaskSetDetailedDescription(taskID, newValue);
                        }
                        break;
                    case (uint)EHPMProjectDefaultColumn.StepsToReproduce:
                        {
                            m_VirtSession.TaskSetStepsToReproduce(taskID, newValue);
                        }
                        break;
                    case (uint)EHPMProjectDefaultColumn.Comments:
                        PostNewCommentOnTask(taskID, newValue, m_ResourceID);
                        break;
                    case (uint)EHPMProjectDefaultColumn.CCCommentsTo:
                        {
                            HPMTaskCommentsOptions options = new HPMTaskCommentsOptions();
                            Array.Resize(ref options.m_CCNotificationsTo, multiselections.Count);
                            for (int i = 0; i < multiselections.Count; ++i)
                            {
                                HPMUniqueID resource = new HPMUniqueID(Convert.ToInt32(multiselections[i]));
                                HPMResourceReference reference = new HPMResourceReference();
                                reference.m_ID = resource;
                                if (m_VirtSession.ResourceGroupUtilResourceGroupExists(resource))
                                    reference.m_ResourceType = EHPMResourceGroupingType.ResourceGroup;
                                else
                                    reference.m_ResourceType = EHPMResourceGroupingType.Resource;
                                options.m_CCNotificationsTo[i] = reference;
                            }
                            m_VirtSession.TaskSetCommentsOptions(taskID, options);
                        }
                        break;

                    case (uint)EHPMProjectDefaultColumn.AssignedTo:
                        {
                            HPMTaskResourceAllocation oldAllocation = m_VirtSession.TaskGetResourceAllocation(taskID);

                            HPMTaskResourceAllocation resourceAllocation = new HPMTaskResourceAllocation();
                            Array.Resize(ref resourceAllocation.m_Resources, multiselections.Count);
                            for (int i = 0; i < multiselections.Count; ++i)
                            {
                                HPMTaskResourceAllocationResource resource = new HPMTaskResourceAllocationResource();
                                HPMUniqueID rid = new HPMUniqueID(Convert.ToInt32(multiselections[i]));
                                resource.m_ResourceID = rid;
                                resource.m_PercentAllocated = 100;
                                foreach (HPMTaskResourceAllocationResource oldresource in oldAllocation.m_Resources)
                                {
                                    // if the resource was previously allocated we use the old allocation percent, otherwise set it to 100%
                                    if (resource.m_ResourceID == oldresource.m_ResourceID)
                                    {
                                        resource.m_PercentAllocated = oldresource.m_PercentAllocated;
                                    }
                                }
                                resourceAllocation.m_Resources[i] = resource;
                            }
                            m_VirtSession.TaskSetResourceAllocation(taskID, resourceAllocation, true, EHPMTaskSetStatusFlag.All);
                        }
                        break;

                    case (uint)EHPMProjectDefaultColumn.WorkRemaining:
                        {
                            m_VirtSession.TaskSetWorkRemaining(taskID, Convert.ToInt32(newValue) + 1);
                        }
                        break;

                    case (uint)EHPMProjectDefaultColumn.BugStatus:
                        {
                            HPMInt32 state = Convert.ToInt32(newValue);
                            // Can only change to new status if workflow allows it
                            if (CanProgressToNewStatus(taskID, m_ResourceID, projectID, state))
                            {
                                m_VirtSession.TaskSetWorkflowStatus(taskID, state, EHPMTaskSetStatusFlag.DoAutoAssignments | EHPMTaskSetStatusFlag.DoAutoCompletion);
                            }
                        }
                        break;
                    default:
                        {
                            // custom column
                            HPMProjectCustomColumnsColumn customColumn = m_VirtSession.ProjectGetCustomColumn(projectID, colType);
                            bool doautoassignments = false;
                            string data = "";
                            switch (customColumn.m_Type)
                            {
                                case EHPMProjectCustomColumnsColumnType.DateTime:
                                case EHPMProjectCustomColumnsColumnType.DateTimeWithTime:
                                    {
                                        try
                                        {
                                            DateTime parsedDate = DateTime.Parse(newValue);
                                            data = m_VirtSession.UtilEncodeCustomColumnDateTimeValue(ToHpmTime(parsedDate));
                                        }
                                        catch (FormatException error)
                                        {
                                            SetErrorMessage("Internal error", error.Message);
                                            return;
                                        }
                                    }
                                    break;
                                case EHPMProjectCustomColumnsColumnType.Resources:
                                    {
                                        HPMResourceDefinitionList resourcesToEncode = new HPMResourceDefinitionList();
                                        Array.Resize(ref resourcesToEncode.m_Resources, multiselections.Count);
                                        for (int i = 0; i < multiselections.Count; ++i)
                                        {
                                            HPMUniqueID resource = new HPMUniqueID(Convert.ToInt32(multiselections[i]));
                                            HPMResourceDefinition resourceDef = new HPMResourceDefinition();
                                            resourceDef.m_ID = resource;
                                            if (m_VirtSession.ResourceGroupUtilResourceGroupExists(resource))
                                                resourceDef.m_GroupingType = EHPMResourceGroupingType.ResourceGroup;
                                            else
                                                resourceDef.m_GroupingType = EHPMResourceGroupingType.Resource;
                                            resourcesToEncode.m_Resources[i] = resourceDef;
                                        }
                                        data = m_VirtSession.UtilEncodeCustomColumnResourcesValue(resourcesToEncode, projectID);
                                    }
                                    break;
                                case EHPMProjectCustomColumnsColumnType.IntegerNumber:
                                case EHPMProjectCustomColumnsColumnType.FloatNumber:
                                case EHPMProjectCustomColumnsColumnType.MultiLineText:
                                case EHPMProjectCustomColumnsColumnType.Hyperlink:
                                case EHPMProjectCustomColumnsColumnType.Text:
                                    {
                                        data = newValue;
                                    }
                                    break;

                                case EHPMProjectCustomColumnsColumnType.DropList:
                                    {
                                        data = (newValue == "0") ? "" : newValue;
                                        doautoassignments = true;
                                    }
                                    break;
                                case EHPMProjectCustomColumnsColumnType.MultiSelectionDropList:
                                    {
                                        StringBuilder builder = new StringBuilder();
                                        for (int i = 0; i < multiselections.Count; ++i)
                                        {
                                            if (builder.Length > 0)
                                                builder.Append(";");
                                            string value = (multiselections[i] == "0") ? "" : multiselections[i];
                                            builder.Append(value);
                                        }
                                        data = builder.ToString();
                                        doautoassignments = true;
                                    }
                                    break;
                                // Exercise: add missing types here
                            }

                            m_VirtSession.TaskSetCustomColumnData(taskID, colType, data, doautoassignments);

                        }
                        break;

                }
            }
            catch (HPMSdkException error)
            {
                SetErrorMessage("Could not update task data.", error.ErrorAsStr());
            }
            catch (HPMSdkManagedException error)
            {
                SetErrorMessage("Could not update task data.", error.ErrorAsStr());
            }
            finally
            {
                m_VirtSession.ResourceImpersonate(m_NoUserID, EHPMDataHistoryClientOrigin.CustomSDK, m_NoMessage);
            }
        }