示例#1
0
        /// <summary>
        /// Factory method to create a CustomColumnValue from the internal endocding of custom column values in Hansoft.
        /// </summary>
        /// <param name="task">The task that the value belongs to.</param>
        /// <param name="customColumn">The custom column that the value belongs to.</param>
        /// <param name="internalValue">The Hansoft internal value.</param>
        /// <returns>The CustomColumn value corresponding to the given parameters.</returns>
        public static CustomColumnValue FromInternalValue(Task task, HPMProjectCustomColumnsColumn customColumn, string internalValue)
        {
            switch (customColumn.m_Type)
            {
            case EHPMProjectCustomColumnsColumnType.AccumulatedTime:
                return(AccumulatedTimeValue.FromInternalValue(task, customColumn, internalValue));

            case EHPMProjectCustomColumnsColumnType.FloatNumber:
                return(FloatNumberValue.FromInternalValue(task, customColumn, internalValue));

            case EHPMProjectCustomColumnsColumnType.IntegerNumber:
                return(IntegerNumberValue.FromInternalValue(task, customColumn, internalValue));

            case EHPMProjectCustomColumnsColumnType.Hyperlink:
                return(HyperlinkValue.FromInternalValue(task, customColumn, internalValue));

            case EHPMProjectCustomColumnsColumnType.Text:
                return(TextValue.FromInternalValue(task, customColumn, internalValue));

            case EHPMProjectCustomColumnsColumnType.MultiLineText:
                return(MultilineTextValue.FromInternalValue(task, customColumn, internalValue));

            case EHPMProjectCustomColumnsColumnType.DateTime:
                return(DateValue.FromInternalValue(task, customColumn, internalValue));

            case EHPMProjectCustomColumnsColumnType.DateTimeWithTime:
                return(DateTimeValue.FromInternalValue(task, customColumn, internalValue));

            case EHPMProjectCustomColumnsColumnType.DropList:
                return(SingleSelectionValue.FromInternalValue(task, customColumn, internalValue));

            case EHPMProjectCustomColumnsColumnType.MultiSelectionDropList:
                return(MultipleSelectionValue.FromInternalValue(task, customColumn, internalValue));

            case EHPMProjectCustomColumnsColumnType.Resources:
                return(ResourcesValue.FromInternalValue(task, customColumn, internalValue));

            default:
                return(null);
            }
        }
示例#2
0
        /// <summary>
        /// Factory method to create a CustomColumnValue from the end user representation (string) of custom column values in Hansoft.
        /// </summary>
        /// <param name="task">The task that the value belongs to.</param>
        /// <param name="customColumn">The custom column that the value belongs to.</param>
        /// <param name="endUserString">The string value of the custom column as it is displayed in the Hansoft client.</param>
        /// <returns>The CustomColumn value corresponding to the given parameters.</returns>
        /// <returns></returns>
        public static CustomColumnValue FromEndUserString(Task task, HPMProjectCustomColumnsColumn customColumn, string endUserString)
        {
            switch (customColumn.m_Type)
            {
            case EHPMProjectCustomColumnsColumnType.AccumulatedTime:
                return(AccumulatedTimeValue.FromInternalValue(task, customColumn, endUserString));

            case EHPMProjectCustomColumnsColumnType.FloatNumber:
                return(FloatNumberValue.FromInternalValue(task, customColumn, endUserString));

            case EHPMProjectCustomColumnsColumnType.IntegerNumber:
                return(IntegerNumberValue.FromInternalValue(task, customColumn, endUserString));

            case EHPMProjectCustomColumnsColumnType.Hyperlink:
                return(HyperlinkValue.FromInternalValue(task, customColumn, endUserString));

            case EHPMProjectCustomColumnsColumnType.Text:
                return(TextValue.FromInternalValue(task, customColumn, endUserString));

            case EHPMProjectCustomColumnsColumnType.MultiLineText:
                return(MultilineTextValue.FromEscapedString(task, customColumn, endUserString));

            case EHPMProjectCustomColumnsColumnType.DateTime:
                DateTime dt;
                if (!DateTime.TryParse(endUserString, out dt))
                {
                    return(DateValue.FromInternalValue(task, customColumn, endUserString));
                }
                else
                {
                    return(DateValue.FromDateTime(task, customColumn, dt.ToUniversalTime()));
                }

            case EHPMProjectCustomColumnsColumnType.DateTimeWithTime:
                if (!DateTime.TryParse(endUserString, out dt))
                {
                    return(DateValue.FromInternalValue(task, customColumn, endUserString));
                }
                else
                {
                    return(DateTimeValue.FromDateTime(task, customColumn, dt.ToUniversalTime()));
                }

            case EHPMProjectCustomColumnsColumnType.DropList:
                return(SingleSelectionValue.FromName(task, customColumn, endUserString));

            case EHPMProjectCustomColumnsColumnType.MultiSelectionDropList:
                return(MultipleSelectionValue.FromName(task, customColumn, endUserString));

            case EHPMProjectCustomColumnsColumnType.Resources:
                Project         project   = Project.GetProject(task.MainProjectID);
                List <Resource> resources = new List <Resource>();
                string[]        rStrings  = endUserString.Split(new char[] { ';' });
                foreach (string rs in rStrings)
                {
                    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);
                        }
                    }
                }
                return(ResourcesValue.FromResourceList(task, customColumn, resources));

            default:
                return(null);
            }
        }