public ActionResult <CatalogDto> GetCatalogInfo(int id) { Catalog catalog = _directoryFacade.GetCatalogById(id); return(Ok(new CatalogDto { Id = catalog.Id, Name = catalog.Name, OrderInParentCatalog = catalog.OrderInParentCatalog })); }
/// <summary> /// Данный метод строит дерево каталогов /// </summary> /// <param name="initialCatalogId">Id каталога, с которого нужно начинать строить дерево</param> /// <param name="isAddTextBlocks">Если true, то в дерево будут добавлены текстовые файлы</param> /// <returns>Объект типа NodeType, который является начальным каталогом</returns> public NodeType BuildTree(int initialCatalogId = Constants.RootCatalogId, bool isAddTextBlocks = false) { Catalog initialCatalog; if (initialCatalogId == Constants.RootCatalogId) { initialCatalog = new Catalog { Id = 0 }; } else { initialCatalog = _directoryFacade.GetCatalogById(initialCatalogId); if (initialCatalog == null) { throw new CatalogNotFoundException(); } } NodeType result = CreateNode(initialCatalog); // Получение подкаталогов и файлов, находящихся в изначальном каталоге foreach (Catalog subcatalog in _directoryFacade.GetSubcatalogs(initialCatalogId)) { result.ChildrenNodes.Add(CreateNode(subcatalog, result)); } if (isAddTextBlocks) { foreach (TextBlock textBlock in _directoryFacade.GetCatalogAttachments(initialCatalogId)) { result.CatalogAttachments.Add(textBlock); } } // Построение дерева List <ICatalogNode> catalogsOnCurrDepthLevel = Enumerable.ToList <ICatalogNode>(result.ChildrenNodes); while (catalogsOnCurrDepthLevel.Count > 0) { List <ICatalogNode> catalogsOnNextDepthLevel = new List <ICatalogNode>(); foreach (NodeType currParentCatalog in catalogsOnCurrDepthLevel) { List <Catalog> allSubcatalogs = _directoryFacade.GetSubcatalogs(currParentCatalog.Id); foreach (Catalog currSubcatalog in allSubcatalogs) { NodeType node = CreateNode(currSubcatalog, currParentCatalog); currParentCatalog.ChildrenNodes.Add(node); catalogsOnNextDepthLevel.Add(node); } if (isAddTextBlocks) { foreach (TextBlock textBlock in _directoryFacade.GetCatalogAttachments(currParentCatalog.Id)) { currParentCatalog.CatalogAttachments.Add(textBlock); } } } catalogsOnCurrDepthLevel = catalogsOnNextDepthLevel; } return(result); }