public virtual void DeleteCategorySpecificationAtrribute(CategorySpecificationAtrribute categorySpecificationAtrribute)
        {
            if (categorySpecificationAtrribute == null)
            {
                throw new ArgumentNullException("categorySpecificationAtrribute");
            }

            categorySpecificationAtrribute.Deleted = true;
            UpdateCategorySpecificationAtrribute(categorySpecificationAtrribute);
        }
        public virtual void InsertCategorySpecificationAtrribute(CategorySpecificationAtrribute categorySpecificationAtrribute)
        {
            if (categorySpecificationAtrribute == null)
            {
                throw new ArgumentNullException("categorySpecificationAtrribute");
            }

            _categorySpecificationAtrributeRepository.Insert(categorySpecificationAtrribute);

            //cache
            _cacheManager.RemoveByPattern(CATEGORYSPECIFICATIONATTRIBUTE_PATTERN_KEY);

            //event notification
            _eventPublisher.EntityInserted(categorySpecificationAtrribute);
        }
        public virtual void UpdateCategorySpecificationAtrribute(CategorySpecificationAtrribute categorySpecificationAtrribute)
        {
            if (categorySpecificationAtrribute == null)
            {
                throw new ArgumentNullException("categorySpecificationAtrribute");
            }

            //validate category hierarchy
            var CategorySpecificationAtrribute = GetCategorySpecificationAtrributeBySid(categorySpecificationAtrribute.SpecificationAttributeId);

            if (CategorySpecificationAtrribute != null)
            {
                CategorySpecificationAtrribute.AllowFiltering           = categorySpecificationAtrribute.AllowFiltering;
                CategorySpecificationAtrribute.Deleted                  = categorySpecificationAtrribute.Deleted;
                CategorySpecificationAtrribute.CategoryId               = categorySpecificationAtrribute.CategoryId;
                CategorySpecificationAtrribute.SpecificationAttributeId = categorySpecificationAtrribute.SpecificationAttributeId;
                _categorySpecificationAtrributeRepository.Update(CategorySpecificationAtrribute);
            }
            //cache
            _cacheManager.RemoveByPattern(CATEGORYSPECIFICATIONATTRIBUTE_PATTERN_KEY);

            //event notification
            _eventPublisher.EntityUpdated(categorySpecificationAtrribute);
        }