private void SaveChildCatalogues(CatalogueInfo parentCatalogueInfo, List <CatalogueInfo> allCatalogueInfos)
        {
            var childCatalogueInfos =
                allCatalogueInfos.Where(item => item.ParentNodeId == parentCatalogueInfo.NodeId).ToList();
            var parentId = parentCatalogueInfo.Id;

            foreach (var catalogueInfo in childCatalogueInfos)
            {
                PKS_KTEMPLATE_CATALOGUE catalogue = new PKS_KTEMPLATE_CATALOGUE();
                catalogue.CODE        = catalogueInfo.Code;
                catalogue.NAME        = catalogueInfo.Name;
                catalogue.LEVELNUMBER = catalogueInfo.LevelNumber;
                catalogue.ORDERNUMBER = catalogueInfo.OrderNumber;
                catalogue.PARENTID    = parentId;
                catalogue.KTEMPLATEID = catalogueInfo.TemplateId;
                if (catalogueInfo.Id > 0)
                {
                    catalogue.Id = catalogueInfo.Id;
                    _kTCatalogueRepository.Update(catalogue);
                }
                else
                {
                    _kTCatalogueRepository.Add(catalogue);
                    catalogueInfo.Id = catalogue.Id;
                }
                SaveChildCatalogues(catalogueInfo, allCatalogueInfos);
            }
        }
        public bool SaveCatalogues2(int templateId, List <CatalogueInfo> catalogueInfos)
        {
            //刪除重复创建

            var toRemoveCatalogues = _kTCatalogueRepository.GetQuery()
                                     .Where(item => item.KTEMPLATEID == templateId).ToList();

            toRemoveCatalogues.ForEach(item =>
            {
                _kTCatalogueRepository.Delete(item, false);
            });

            List <PKS_KTEMPLATE_CATALOGUE> rootCatalogues = new List <PKS_KTEMPLATE_CATALOGUE>();
            var rootCatalogueInfos =
                catalogueInfos.Where(item => string.IsNullOrWhiteSpace(item.ParentNodeId) || item.ParentNodeId == "0");

            foreach (var catalogueInfo in rootCatalogueInfos)
            {
                PKS_KTEMPLATE_CATALOGUE catalogue = new PKS_KTEMPLATE_CATALOGUE();
                catalogue.Id          = 0;
                catalogue.CODE        = catalogueInfo.Code;
                catalogue.NAME        = catalogueInfo.Name;
                catalogue.LEVELNUMBER = catalogueInfo.LevelNumber;
                catalogue.ORDERNUMBER = catalogueInfo.OrderNumber;
                catalogue.KTEMPLATEID = catalogueInfo.TemplateId;
                BuildChildCatalogue(catalogue, catalogueInfo, catalogueInfos);
                rootCatalogues.Add(catalogue);
            }
            if (rootCatalogues.Any())
            {
                _kTCatalogueRepository.AddRange(rootCatalogues, false);
            }
            return(true);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 新增目录
        /// </summary>
        /// <param name="catalogueInfo"></param>
        /// <returns></returns>
        public bool AddCatalogure(CatalogueInfo catalogueInfo)
        {
            PKS_KTEMPLATE_CATALOGUE catalogue = new PKS_KTEMPLATE_CATALOGUE();

            catalogue.CODE        = catalogue.CODE;
            catalogue.NAME        = catalogue.NAME;
            catalogue.LEVELNUMBER = catalogue.LEVELNUMBER;
            catalogue.ORDERNUMBER = catalogue.ORDERNUMBER;
            catalogue.PARENTID    = catalogue.PARENTID;
            catalogue.KTEMPLATEID = catalogue.KTEMPLATEID;
            _kTCatalogueRepository.Add(catalogue);
            return(true);
        }
        public void BuildChildCatalogue(PKS_KTEMPLATE_CATALOGUE parentCatalogue, CatalogueInfo parentCatalogueInfo, List <CatalogueInfo> catalogueInfos)
        {
            var childrenCatalogueInfos = catalogueInfos.Where(item => string.Equals(item.ParentNodeId, parentCatalogueInfo.NodeId, StringComparison.OrdinalIgnoreCase));

            if (childrenCatalogueInfos.Any())
            {
                foreach (var childrenCatalogueInfo in childrenCatalogueInfos)
                {
                    PKS_KTEMPLATE_CATALOGUE catalogue = new PKS_KTEMPLATE_CATALOGUE();
                    catalogue.Id                    = 0;
                    catalogue.CODE                  = childrenCatalogueInfo.Code;
                    catalogue.NAME                  = childrenCatalogueInfo.Name;
                    catalogue.LEVELNUMBER           = childrenCatalogueInfo.LevelNumber;
                    catalogue.ORDERNUMBER           = childrenCatalogueInfo.OrderNumber;
                    catalogue.KTEMPLATEID           = childrenCatalogueInfo.TemplateId;
                    catalogue.PLACEHOLDERID         = childrenCatalogueInfo.PlaceHolderId;
                    childrenCatalogueInfo.Catalogue = catalogue;
                    parentCatalogue.Children.Add(catalogue);

                    BuildChildCatalogue(catalogue, childrenCatalogueInfo, catalogueInfos);
                }
            }
        }
        public bool SaveCatalogues(int templateId, List <CatalogueInfo> catalogueInfos)
        {
            var db_catalogueIds      = _kTCatalogueRepository.GetQuery().Where(item => item.KTEMPLATEID == templateId).Select(item => item.Id).ToList();
            var toRemoveCatalogueIds = catalogueInfos.Where(item => item.Id > 0 && !db_catalogueIds.Contains(item.Id)).Select(item => item.Id).ToList();

            if (toRemoveCatalogueIds.Any())
            {
                List <int> toRemoveIds            = new List <int>(toRemoveCatalogueIds);
                var        toRemoveCatalogueInfos =
                    _kTCatalogueRepository.GetQuery()
                    .Where(item => item.KTEMPLATEID == templateId && toRemoveCatalogueIds.Contains(item.Id))
                    .Select(item => new { item.Id, item.CODE }).ToList();
                foreach (var removeCatalogue in toRemoveCatalogueInfos)
                {
                    var ids = _kTCatalogueRepository.GetQuery().Where(item => item.KTEMPLATEID == templateId &&
                                                                      item.CODE.IndexOf(removeCatalogue.CODE + ".") == 0)
                              .Select(item => item.Id)
                              .ToList();
                    if (ids.Any())
                    {
                        toRemoveIds.AddRange(ids);
                    }
                }
                toRemoveIds = toRemoveIds.Distinct().ToList();

                if (toRemoveIds.Any())
                {
                    var toRemoveFragments = _kTCatalogueRepository.GetQuery()
                                            .Where(item => item.KTEMPLATEID == templateId && toRemoveIds.Contains(item.Id)).ToList();
                    toRemoveFragments.ForEach(item =>
                    {
                        _kTCatalogueRepository.Delete(item);
                    });
                }
            }


            var topCatalogues =
                catalogueInfos.Where(item => string.IsNullOrWhiteSpace(item.ParentNodeId) || item.ParentNodeId == "0")
                .ToList();

            topCatalogues.ForEach(catalogueInfo =>
            {
                PKS_KTEMPLATE_CATALOGUE catalogue = new PKS_KTEMPLATE_CATALOGUE();
                catalogue.CODE        = catalogueInfo.Code;
                catalogue.NAME        = catalogueInfo.Name;
                catalogue.LEVELNUMBER = catalogueInfo.LevelNumber;
                catalogue.ORDERNUMBER = catalogueInfo.OrderNumber;
                catalogue.PARENTID    = catalogueInfo.ParentId;
                catalogue.KTEMPLATEID = catalogueInfo.TemplateId;
                if (catalogueInfo.Id > 0)
                {
                    catalogue.Id = catalogueInfo.Id;
                    _kTCatalogueRepository.Update(catalogue);
                }
                else
                {
                    _kTCatalogueRepository.Add(catalogue);
                    catalogueInfo.Id = catalogue.Id;
                }

                SaveChildCatalogues(catalogueInfo, catalogueInfos);
            });

            return(true);
        }
        public bool SaveTemplate(TemplateTree templateTree, List <FragmentModel> fragmentModels, List <CatalogueInfo> catalogueInfos)
        {
            //模板
            int templateId = templateTree.Id;
            var kTemplate  =
                _kTemplateRepository.GetQuery().FirstOrDefault(item => item.Id == templateId);

            if (kTemplate == null)
            {
                throw new Exception("模板不存在");
            }

            _kTemplateRepository.BeginTrans();

            kTemplate.TEMPLATE        = templateTree.Template;
            kTemplate.LASTUPDATEDDATE = DateTime.Now;
            _kTemplateRepository.Update(kTemplate, false);
            //知识片段
            var db_fragments =
                _kFragmentRepository.GetQuery()
                .Where(item => item.KTEMPLATEID == templateId)
                .ToList();

            foreach (var item in db_fragments)
            {
                _kFragmentRepository.Delete(item, false);
            }
            List <PKS_KFRAGMENT> toAddFragments = new List <PKS_KFRAGMENT>();

            foreach (var fragmentModel in fragmentModels)
            {
                PKS_KFRAGMENT fragment = new PKS_KFRAGMENT();
                fragment.KTEMPLATEID        = templateId;
                fragment.TITLE              = fragmentModel.Title;
                fragment.QUERYPARAMETER     = fragmentModel.QueryParameter;
                fragment.COMPONENTPARAMETER = fragmentModel.ComponentParameter;
                fragment.HTMLTEXT           = fragmentModel.Htmltext;
                fragment.KFRAGMENTTYPEID    = fragmentModel.FragmentTypeId;
                fragment.PLACEHOLDERID      = fragmentModel.PlaceholderId;
                fragment.CREATEDDATE        = DateTime.Now;
                toAddFragments.Add(fragment);
            }
            if (toAddFragments.Any())
            {
                _kFragmentRepository.AddRange(toAddFragments, false);
            }
            //目录
            var db_catalogues =
                _kTCatalogueRepository.GetQuery()
                .Where(item => item.KTEMPLATEID == templateId)
                .ToList();

            db_catalogues.ForEach(item =>
            {
                _kTCatalogueRepository.Delete(item, false);
            });
            List <PKS_KTEMPLATE_CATALOGUE> rootCatalogues = new List <PKS_KTEMPLATE_CATALOGUE>();
            var rootCatalogueInfos =
                catalogueInfos.Where(item => string.IsNullOrWhiteSpace(item.ParentNodeId) || item.ParentNodeId == "0");

            foreach (var catalogueInfo in rootCatalogueInfos)
            {
                PKS_KTEMPLATE_CATALOGUE catalogue = new PKS_KTEMPLATE_CATALOGUE();
                catalogue.Id            = 0;
                catalogue.CODE          = catalogueInfo.Code;
                catalogue.NAME          = catalogueInfo.Name;
                catalogue.LEVELNUMBER   = catalogueInfo.LevelNumber;
                catalogue.ORDERNUMBER   = catalogueInfo.OrderNumber;
                catalogue.KTEMPLATEID   = catalogueInfo.TemplateId;
                catalogue.PLACEHOLDERID = catalogueInfo.PlaceHolderId;
                catalogue.CREATEDDATE   = DateTime.Now;
                catalogueInfo.Catalogue = catalogue;
                BuildChildCatalogue(catalogue, catalogueInfo, catalogueInfos);
                rootCatalogues.Add(catalogue);
            }
            if (rootCatalogues.Any())
            {
                _kTCatalogueRepository.AddRange(rootCatalogues, false);
            }
            //SaveCatalogues2(templateId, catalogueInfos);
            _kTemplateRepository.Submit();
            _kTemplateRepository.EndTrans();

            //更新知识片段的CatalogueId
            foreach (var fragment in toAddFragments)
            {
                var placeHolderId = fragment.PLACEHOLDERID;
                var catalogueInfo = catalogueInfos.Where(item => item.Catalogue != null && item.PlaceHolderId == placeHolderId).FirstOrDefault();
                if (catalogueInfo != null)
                {
                    fragment.KTEMPLATECATALOGUEID = catalogueInfo.Catalogue.Id;
                    fragment.MPLACEHOLDERID       = placeHolderId;
                    _kFragmentRepository.Update(fragment);
                }
                else
                {
                    var fragmentModel = fragmentModels.FirstOrDefault(item => item.PlaceholderId == placeHolderId);
                    if (fragmentModel != null)
                    {
                        var catalogNodeId = fragmentModel.CatalogueNodeId;
                        if (!string.IsNullOrWhiteSpace(catalogNodeId))
                        {
                            var cat = catalogueInfos.FirstOrDefault(item => string.Equals(item.PlaceHolderId, catalogNodeId, StringComparison.OrdinalIgnoreCase));
                            fragment.KTEMPLATECATALOGUEID = cat.Catalogue.Id;
                            fragment.MPLACEHOLDERID       = catalogNodeId;
                            _kFragmentRepository.Update(fragment);
                        }
                    }
                }
            }
            return(true);
        }