/// <summary>
 /// Create a FactorField instance.
 /// </summary>
 /// <param name="id">Id of the factor field</param>
 /// <param name="sortOrder">Sort order of the factor field</param>
 /// <param name="factorDataTypeId">Id of the datatype of the factor field</param>
 /// <param name="fieldIndex">Index of this factor field related to all possible factor fields.</param>
 /// <param name="label">Label of the factor field</param>
 /// <param name="information">Information about the factor field</param>
 /// <param name="isMain">Indicates whether or not the factor field is the main field</param>
 /// <param name="isSubstantial">Indicates whether or not the factor field is a substantial field</param>
 /// <param name="factorFieldTypeId">Id of the field type</param>
 /// <param name="size">Size of the field (Max length of text fields)</param>
 /// <param name="factorFieldEnumId">Id of the factor field enum object. Id less than 0 indicates that the factor has no factor field enum</param>
 /// <param name="unitLabel">Unit label of the factor field</param>
 public FactorField(
     Int32 id,
     Int32 sortOrder,
     Int32 factorDataTypeId,
     Int32 fieldIndex,
     String label,
     String information,
     Boolean isMain,
     Boolean isSubstantial,
     Int32 factorFieldTypeId,
     Int32 size,
     Int32 factorFieldEnumId,
     String unitLabel)
     : base(id, sortOrder)
 {
     _factorDataTypeId = factorDataTypeId;
     _fieldIndex       = fieldIndex;
     _information      = information;
     _isMain           = isMain;
     _isSubstantial    = isSubstantial;
     _label            = label;
     if (factorFieldEnumId > -1)
     {
         _factorFieldEnum = FactorManager.GetFactorFieldEnum(factorFieldEnumId);
     }
     _type      = FactorManager.GetFactorFieldType(factorFieldTypeId);
     _size      = size;
     _unitLabel = unitLabel;
 }
        /// <summary>
        /// Convert a web factor field enumeration instance into
        /// a factor field enumeration instance.
        /// </summary>
        /// <param name="userContext">
        /// Information about the user that makes this method call.
        /// </param>
        /// <param name="webFactorFieldEnum">A web factor field enumeration instance.</param>
        /// <returns>A factor field enumeration instance.</returns>
        private IFactorFieldEnum GetFactorFieldEnum(IUserContext userContext,
                                                    WebFactorFieldEnum webFactorFieldEnum)
        {
            IFactorFieldEnum         factorFieldEnum;
            FactorFieldEnumValueList values;

            factorFieldEnum             = new FactorFieldEnum();
            factorFieldEnum.DataContext = GetDataContext(userContext);
            factorFieldEnum.Id          = webFactorFieldEnum.Id;
            values = new FactorFieldEnumValueList();
            foreach (WebFactorFieldEnumValue webFactorFieldEnumValue in webFactorFieldEnum.Values)
            {
                values.Add(GetFactorFieldEnumValue(userContext, factorFieldEnum, webFactorFieldEnumValue));
            }

            factorFieldEnum.Values = values;
            return(factorFieldEnum);
        }