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)))
                            )
                        )
                    );
            }
        }
Exemple #4
0
 private CatalogItemViewModel GetCatalog(HierarchyViewModel hierarchy, CategoryItemViewModel category)
 {
     return(hierarchy.FirstOrDefault(cata => this.Contains(cata.Categories, category)));
 }