public ActionResult GetCategories(RenderWidgetViewModel model) { var categories = new List <CategoryItem>(); using (var api = ApiFactory.Create()) { var useSpecificCategoryTree = model.GetOptionValue <bool>("UseSpecificCategoryTree"); var categoryTreeName = model.GetOptionValue <string>("CategoryTreeName"); var treeRequest = new GetCategoryTreesModel(); var treePages = api.Root.Categories.Get(new GetCategoryTreesRequest { Data = treeRequest }); var query = treePages.Data.Items.Where(item => item.AvailableFor.Contains(new Guid("75E6C021-1D1F-459E-A416-D18477BF2020"))); if (useSpecificCategoryTree) { query = query.Where(item => item.Name == categoryTreeName); } var categoryTreeIds = query .Select(item => item.Id) .ToList(); foreach (var treeId in categoryTreeIds) { var request = new GetCategoryTreeRequest { CategoryTreeId = treeId, Data = { IncludeNodes = true } }; var pages = api.Root.Category.Get(request); categories.AddRange(pages.Nodes .Where(node => node.ParentId == null) .OrderBy(node => node.Name) .Select(node => new CategoryItem { Name = node.Name, Id = node.Id })); } } return(View(categories)); }
public ActionResult GetCategories(RenderWidgetViewModel model) { var categories = new List<CategoryItem>(); using (var api = ApiFactory.Create()) { var useSpecificCategoryTree = model.GetOptionValue<bool>("UseSpecificCategoryTree"); var categoryTreeName = model.GetOptionValue<string>("CategoryTreeName"); var treeRequest = new GetCategoryTreesModel(); var treePages = api.Root.Categories.Get(new GetCategoryTreesRequest { Data = treeRequest }); var query = treePages.Data.Items.Where(item => item.AvailableFor.Contains(new Guid("75E6C021-1D1F-459E-A416-D18477BF2020"))); if (useSpecificCategoryTree) { query = query.Where(item => item.Name == categoryTreeName); } var categoryTreeIds = query .Select(item => item.Id) .ToList(); foreach (var treeId in categoryTreeIds) { var request = new GetCategoryTreeRequest { CategoryTreeId = treeId, Data = { IncludeNodes = true } }; var pages = api.Root.Category.Get(request); categories.AddRange(pages.Nodes .Where(node => node.ParentId == null) .OrderBy(node => node.Name) .Select(node => new CategoryItem { Name = node.Name, Id = node.Id })); } } return View(categories); }