Example #1
0
        /// <summary>
        /// 把fromFolderId合并到toFolderId
        /// </summary>
        /// <remarks>
        /// 例如:将栏目fromFolderId合并到栏目toFolderId,那么fromFolderId栏目下的所有子栏目和ContentItem全部归到toFolderID栏目,同时删除fromFolderID栏目
        /// </remarks>
        public void Merge(int fromFolderId, int toFolderId)
        {
            ContentFolder toFolder = Get(toFolderId);

            if (toFolder == null)
            {
                return;
            }

            ContentFolder fromFolder = Get(fromFolderId);

            if (fromFolder == null)
            {
                return;
            }

            ContentItemRepository contentItemRepository = new ContentItemRepository();

            foreach (var childSection in fromFolder.Children)
            {
                childSection.ParentId = toFolderId;
                childSection.Depth    = toFolder.Depth + 1;

                if (childSection.Depth == 1)
                {
                    childSection.ParentIdList = childSection.ParentId.ToString();
                }
                else
                {
                    childSection.ParentIdList = toFolder.ParentIdList + "," + childSection.ParentId;
                }

                RecursiveUpdateDepthAndParentIdList(childSection);

                ContentItemQuery contentItemQuery = new ContentItemQuery(CacheVersionType.None)
                {
                    ContentFolderId = childSection.ContentFolderId
                };

                PagingDataSet <ContentItem> contentItems = contentItemRepository.GetContentItems(false, contentItemQuery, int.MaxValue, 1);

                foreach (var contentItem in contentItems)
                {
                    contentItem.ContentFolderId = toFolderId;
                    contentItemRepository.Update(contentItem);
                }
            }

            ContentItemQuery currentContentItemQuery = new ContentItemQuery(CacheVersionType.None)
            {
                ContentFolderId = fromFolderId
            };
            PagingDataSet <ContentItem> currentContentItems = contentItemRepository.GetContentItems(false, currentContentItemQuery, int.MaxValue, 1);

            foreach (var item in currentContentItems)
            {
                item.ContentFolderId = toFolderId;
                contentItemRepository.Update(item);
            }

            if (fromFolder.ParentId > 0)
            {
                ContentFolder fromParentFolder = Get(fromFolder.ParentId);
                if (fromParentFolder != null)
                {
                    fromParentFolder.ChildCount -= 1;
                }
            }

            toFolder.ChildCount += fromFolder.ChildCount;
            contentFolderRepository.Update(toFolder);
            contentFolderRepository.Delete(fromFolder);
            EntityData.ForType(typeof(Navigation)).RealTimeCacheHelper.IncreaseAreaVersion("OwnerId", 0);
        }
Example #2
0
 /// <summary>
 /// 构造器
 /// </summary>
 public ContentItemService()
 {
     contentItemRepository = new ContentItemRepository();
 }