Пример #1
0
        /// <summary>
        /// Метод добавляет в базу данных каталог с указанными в catalog значениями. Порядковый номер элемента вычисляется внутри метода
        /// </summary>
        /// <param name="catalog">Объект типа Catalog</param>
        public void Add(Catalog catalog)
        {
            // Элементы в базу данных добавляются в конец, т.е. их порядковый номер равен
            // максимальному номеру из элементов, находящихся в том же каталоге + 1
            List <Catalog>   neighboringCatalogs   = GetSubcatalogs(catalog.ParentCatalogId);
            List <TextBlock> neighboringTextBlocks = GetCatalogAttachments(catalog.ParentCatalogId);
            int maxCatalogOrder = (neighboringCatalogs.Count > 0) ?
                                  neighboringCatalogs.Max(item => item.OrderInParentCatalog) : 0;
            int maxTextBlockOrder = (neighboringTextBlocks.Count > 0) ?
                                    neighboringTextBlocks.Max(item => item.OrderInParentCatalog) : 0;

            catalog.OrderInParentCatalog = Math.Max(maxCatalogOrder, maxTextBlockOrder) + 1;

            _catalogDataAccess.Add(catalog);
        }
Пример #2
0
        /// <summary>
        /// Данный метод сохраняет переданное дерево каталогов в базу данных
        /// </summary>
        /// <param name="catalogNode">Корневой каталог в переданном дереве каталогов.
        /// У данного каталога должен быть указан Id. Id подкаталогов и текстовых файлов вычисляются при добавлении</param>
        public void AddCatalogTree(CatalogParserNodeDto catalogNode)
        {
            List <CatalogParserNodeDto> catalogsOnCurrentDepthLevel = catalogNode.ChildrenNodes;

            foreach (CatalogParserNodeDto item in catalogsOnCurrentDepthLevel)
            {
                item.ParentCatalogId = catalogNode.Id;
            }
            foreach (TextBlock item in catalogNode.CatalogAttachments)
            {
                item.ParentCatalogId = catalogNode.Id;
                _textBlockDataAccess.Add(item);
            }
            while (catalogsOnCurrentDepthLevel.Count > 0)
            {
                List <CatalogParserNodeDto> catalogsOnNextDepthLevel = new List <CatalogParserNodeDto>();
                foreach (var node in catalogsOnCurrentDepthLevel)
                {
                    Catalog catalog = new Catalog
                    {
                        Name = node.Name,
                        OrderInParentCatalog = node.Order,
                        ParentCatalogId      = node.ParentCatalogId
                    };
                    _catalogDataAccess.Add(catalog);
                    node.Id = catalog.Id;
                    foreach (CatalogParserNodeDto item in node.ChildrenNodes)
                    {
                        item.ParentCatalogId = node.Id;
                        catalogsOnNextDepthLevel.Add(item);
                    }
                    foreach (TextBlock item in node.CatalogAttachments)
                    {
                        item.ParentCatalogId = node.Id;
                        _textBlockDataAccess.Add(item);
                    }
                }
                catalogsOnCurrentDepthLevel = catalogsOnNextDepthLevel;
            }
        }