/// <summary>
        /// Sets the status for a species fact.
        /// </summary>
        /// <param name="speciesFact">The species fact to change.</param>
        /// <param name="statusId">The new status Id.</param>
        public static void SetStatus(this ISpeciesFact speciesFact, int?statusId)
        {
            int?currentStatusId = GetStatusId(speciesFact);

            if (currentStatusId.HasValue && currentStatusId.Value == statusId)
            {
                return;
            }

            IFactorFieldEnumValue factorFieldEnumValue = speciesFact.MainField.FactorFieldEnum.Values.FirstOrDefault(enumValue => statusId == enumValue.Id);

            if (factorFieldEnumValue != null)
            {
                speciesFact.MainField.Value = factorFieldEnumValue;
            }
        }
        /// <summary>
        /// Sets the value for an enumeration data type.
        /// </summary>
        /// <param name="value">Value to set.</param>
        private void SetEnumValue(IFactorFieldEnumValue value)
        {
            CheckDataType(FactorFieldDataTypeId.Enum);
            if (value.IsNull())
            {
                HasValue     = false;
                _stringValue = null;
            }
            else
            {
                if (IsTextField)
                {
                    _stringValue = value.KeyText;
                }
                else
                {
                    _numericValue = value.KeyInt.HasValue ? value.KeyInt.Value : Double.MinValue;
                }

                HasValue = true;
            }
        }