/// <summary>
        /// Gets a specification attribute
        /// </summary>
        /// <param name="SpecificationAttributeID">The specification attribute identifier</param>
        /// <returns>Specification attribute</returns>
        public static SpecificationAttribute GetSpecificationAttributeByID(int SpecificationAttributeID)
        {
            if (SpecificationAttributeID == 0)
            {
                return(null);
            }

            string key  = string.Format(SPECIFICATIONATTRIBUTE_BY_ID_KEY, SpecificationAttributeID);
            object obj2 = NopCache.Get(key);

            if (SpecificationAttributeManager.CacheEnabled && (obj2 != null))
            {
                return((SpecificationAttribute)obj2);
            }

            DBSpecificationAttribute dbItem = DBProviderManager <DBSpecificationAttributeProvider> .Provider.GetSpecificationAttributeByID(SpecificationAttributeID);

            SpecificationAttribute specificationAttribute = DBMapping(dbItem);

            if (SpecificationAttributeManager.CacheEnabled)
            {
                NopCache.Max(key, specificationAttribute);
            }
            return(specificationAttribute);
        }
 /// <summary>
 /// Maps a data reader to a spacification attribute
 /// </summary>
 /// <param name="dataReader">IDataReader</param>
 /// <returns>Specification attribute</returns>
 private DBSpecificationAttribute GetSpecificationAttributeFromReader(IDataReader dataReader)
 {
     DBSpecificationAttribute specificationAttribute = new DBSpecificationAttribute();
     specificationAttribute.SpecificationAttributeID = NopSqlDataHelper.GetInt(dataReader, "SpecificationAttributeID");
     specificationAttribute.Name = NopSqlDataHelper.GetString(dataReader, "Name");
     specificationAttribute.DisplayOrder = NopSqlDataHelper.GetInt(dataReader, "DisplayOrder");
     return specificationAttribute;
 }
        /// <summary>
        /// Maps a DBSpecificationAttribute to a SpecificationAttribute
        /// </summary>
        /// <param name="dbItem">DBSpecificationAttribute</param>
        /// <returns>SpecificationAttribute</returns>
        private static SpecificationAttribute DBMapping(DBSpecificationAttribute dbItem)
        {
            if (dbItem == null)
            {
                return(null);
            }

            SpecificationAttribute item = new SpecificationAttribute();

            item.SpecificationAttributeID = dbItem.SpecificationAttributeID;
            item.Name         = dbItem.Name;
            item.DisplayOrder = dbItem.DisplayOrder;

            return(item);
        }
        /// <summary>
        /// Updates the specification attribute
        /// </summary>
        /// <param name="specificationAttributeID">The specification attribute identifier</param>
        /// <param name="name">The name</param>
        /// <param name="displayOrder">Display order</param>
        /// <returns>Specification attribute</returns>
        public static SpecificationAttribute UpdateSpecificationAttribute(int specificationAttributeID, string name, int displayOrder)
        {
            DBSpecificationAttribute dbItem = DBProviderManager <DBSpecificationAttributeProvider> .Provider.UpdateSpecificationAttribute(specificationAttributeID, name, displayOrder);

            SpecificationAttribute specificationAttribute = DBMapping(dbItem);

            if (SpecificationAttributeManager.CacheEnabled)
            {
                NopCache.RemoveByPattern(SPECIFICATIONATTRIBUTE_PATTERN_KEY);
                NopCache.RemoveByPattern(SPECIFICATIONATTRIBUTEOPTION_PATTERN_KEY);
                NopCache.RemoveByPattern(PRODUCTSPECIFICATIONATTRIBUTE_PATTERN_KEY);
            }

            return(specificationAttribute);
        }