//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); } }
//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); } } }
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); } }
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)); }