private void Expand(HierarchyViewModel hierarchy, HierarchyPath hierarchyPath, List <LoadCategoriesInstruction> loadCategoriesInstructions) { CatalogItemViewModel catalog = hierarchy.FirstOrDefault(cata => cata.Catalog.Code.EqualsOrdinalIgnoreCase(hierarchyPath.Catalog)); if (catalog != null) { loadCategoriesInstructions.Add( new LoadCategoriesInstruction( catalog.Catalog.CatalogId, hierarchyPath.TargetCatalog ? CatalogHierarchyServices.RootCategoryCode : hierarchyPath.Categories.Last(), this.CreateAppender(hierarchy, hierarchyPath) ) ); } }
private HierarchyItemViewModel FindItem(HierarchyViewModel hierarchy, HierarchyPath hierarchyPath) { HierarchyItemViewModel item = hierarchy.FirstOrDefault(cata => cata.Catalog.Code.EqualsOrdinalIgnoreCase(hierarchyPath.Catalog)); if (item != null) { foreach (String categoryCode in hierarchyPath.Categories) { item = item.Categories.FirstOrDefault(cate => cate.Category.Code.EqualsOrdinalIgnoreCase(categoryCode)); if (item == null) { break; } } } return(item); }
private void EnsurePath(HierarchyViewModel hierarchy, HierarchyPath hierarchyPath, List <LoadCategoriesInstruction> loadCategoriesInstructions) { CatalogItemViewModel catalog = hierarchy.FirstOrDefault(cata => cata.Catalog.Code.EqualsOrdinalIgnoreCase(hierarchyPath.Catalog)); if (catalog != null) { loadCategoriesInstructions.AddRange( hierarchyPath.Categories .Select((c, i) => new { Code = c, Index = i }) .Where(o => this.FindItem(hierarchy, new HierarchyPath(catalog.Catalog.Code, hierarchyPath.Categories.Take(o.Index + 1))) == null) .Select( o => new LoadCategoriesInstruction( catalog.Catalog.CatalogId, o.Index == 0 ? CatalogHierarchyServices.RootCategoryCode : hierarchyPath.Categories.ElementAtOrDefault(o.Index - 1), this.CreateAppender(hierarchy, new HierarchyPath(catalog.Catalog.Code, hierarchyPath.Categories.Take(o.Index))) ) ) ); } }
private CatalogItemViewModel GetCatalog(HierarchyViewModel hierarchy, CategoryItemViewModel category) { return(hierarchy.FirstOrDefault(cata => this.Contains(cata.Categories, category))); }