Beispiel #1
0
        //private string GetCannonicalCategoryUrlPrefix(string relativeUrl)
        //{
        //    string res = String.Empty;
        //    bool hasParent = false;
        //    {
        //        var rec = _categoryGateway.SelectOneByRelativeUrl(relativeUrl);
        //        if (rec.ParentCategoryId.HasValue)
        //        {
        //            var parent = _categoryGateway.SelectOne(rec.ParentCategoryId.Value);
        //            res = parent.RelativeUrl;
        //            hasParent = parent.ParentCategoryId.HasValue;
        //        }
        //    }
        //    if (String.IsNullOrEmpty(res) || !hasParent)
        //    {
        //        return res;
        //    }
        //    return String.Format("{0}/{1}", GetCannonicalCategoryUrlPrefix(res), res);
        //}

        //private void FillCanonicalUrls(ICollection<Category> categories)
        //{
        //    foreach (var category in categories)
        //    {
        //        category.CanonicalUrl = GetCategoryCanonicalUrl(category.RelativeUrl);
        //        if (category.ChildrenCategories.Any())
        //        {
        //            FillCanonicalUrls(category.ChildrenCategories);
        //        }
        //    }
        //}

        public void FillData(Category category)
        {
            var heart = _heartService.GetHeart(category.HeartId);

            category.FillHeart(heart);
            category.CanonicalUrl = _heartService.GetCanonicalUrl(category.HeartId);

            foreach (var child in category.ChildrenCategories)
            {
                FillData(child);
            }
        }
Beispiel #2
0
        //public string GetCategoryCanonicalUrl(int categoryId)
        //{
        //    string cacheKey = GetCategoryIDCanonicalUrlCacheKey(categoryId);
        //    return GetFromCacheOrLoadAndAddToCache<string>(cacheKey, () =>
        //    {
        //        var cat = GetCategory(categoryId);
        //        return GetCategoryCanonicalUrl(cat.RelativeUrl);
        //    });
        //}
        //public string GetCategoryCanonicalUrl(string relativeUrl)
        //{
        //    string cacheKey = GetCategoryCanonicalUrlCacheKey(relativeUrl);
        //    return GetFromCacheOrLoadAndAddToCache<string>(cacheKey, () =>
        //    {
        //        string prefix = GetCannonicalCategoryUrlPrefix(relativeUrl);
        //        return String.IsNullOrEmpty(prefix) ? relativeUrl : String.Format("{0}/{1}", prefix, relativeUrl);
        //    });
        //}

        private void FillChildren(Category category, bool recursive = true)
        {
            var children    = _categoryGateway.Select(category.HeartId);
            var resChildren = Mapper.Map <ICollection <Category> >(children);

            category.ChildrenCategories = resChildren;
            foreach (var child in resChildren)
            {
                child.ParentCategory = new IdNamePair <int>(category.HeartId, category.Name);
                if (recursive)
                {
                    FillChildren(child);
                }
            }
        }
Beispiel #3
0
        public int CreateCategory(Category category)
        {
            category.Type = category.GetType().FullName;

            var dataCategory = Mapper.Map <Data.Models.Category>(category);

            using (var ts = new TransactionScope())
            {
                int id = category.HeartId = dataCategory.HeartId = _heartService.CreateHeart(category);
                _categoryGateway.Insert(dataCategory);
                RemoveObjectFromCache("Categories");
                RemoveObjectFromCache("AllCategories");
                RemoveObjectFromCache($"ChildCategoriesFor{category.ParentCategoryId}");
                ts.Complete();
                return(id);
            }
        }
Beispiel #4
0
        public void UpdateCategory(Category category)
        {
            var oldCategory = GetCategory(category.HeartId);

            var dataRec     = Mapper.Map <Data.Models.Category>(category);
            var oldSpecCats = _specCategoryGateway.SelectByCategory(category.HeartId);

            using (var ts = new TransactionScope())
            {
                _heartService.UpdateHeart(category);

                _categoryGateway.Update(dataRec);
                foreach (var spec in oldSpecCats.Where(x => category.OrderFormSpecs.All(y => x.SpecId != y.SpecId)).ToList())
                {
                    _specCategoryGateway.Delete(spec);
                }

                foreach (var spec in category.OrderFormSpecs.Where(x => oldSpecCats.All(y => x.SpecId != y.SpecId)))
                {
                    _specCategoryGateway.Insert(new SpecCategory()
                    {
                        CategoryId = category.HeartId,
                        SpecId     = spec.SpecId
                    });
                }
                ts.Complete();
            }


            RemoveObjectFromCache($"ChildCategoriesFor{oldCategory.ParentCategoryId}");
            RemoveObjectFromCache($"ChildCategoriesFor{category.ParentCategoryId}");


            RemoveObjectFromCache("Categories");
            RemoveObjectFromCache("AllCategories");
            RemoveObjectFromCache(GetCategoryCanonicalUrlCacheKey(category.RelativeUrl));
            RemoveObjectFromCache(GetCategoryCanonicalUrlCacheKey(oldCategory.RelativeUrl));

            RemoveObjectFromCache(GetCategoryIDCanonicalUrlCacheKey(category.HeartId));
        }