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); }
/// <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); }