Exemplo n.º 1
0
        /// <summary>
        /// 新增片段
        /// </summary>
        /// <param name="fragmentModel"></param>
        /// <returns></returns>
        public bool AddFragmentInfo(FragmentModel fragmentModel)
        {
            PKS_KFRAGMENT fragmentment = new PKS_KFRAGMENT();

            fragmentment.KTEMPLATEID          = fragmentModel.TemplateId;
            fragmentment.KTEMPLATECATALOGUEID = fragmentModel.TemplateCatalogueId;
            fragmentment.TITLE              = fragmentModel.Title;
            fragmentment.QUERYPARAMETER     = fragmentModel.QueryParameter;
            fragmentment.COMPONENTPARAMETER = fragmentModel.ComponentParameter;

            fragmentment.HTMLTEXT        = fragmentModel.Htmltext;
            fragmentment.KFRAGMENTTYPEID = fragmentModel.FragmentTypeId;
            fragmentment.PLACEHOLDERID   = fragmentModel.PlaceholderId;

            _kFragmentRepository.Add(fragmentment);
            return(true);
        }
        public bool SaveFragments(int templateId, List <FragmentModel> fragmentModels)
        {
            //知识片段
            var db_fragmentIds =
                _kFragmentRepository.GetQuery()
                .Where(item => item.KTEMPLATEID == templateId)
                .Select(item => item.Id)
                .ToList();
            var toRemoveFragmentIds =
                fragmentModels.Where(item => item.Id > 0 && !db_fragmentIds.Contains(item.Id))
                .Select(item => item.Id)
                .ToList();

            if (toRemoveFragmentIds.Any())
            {
                var toRemoveFragments = _kFragmentRepository.GetQuery()
                                        .Where(item => item.KTEMPLATEID == templateId && toRemoveFragmentIds.Contains(item.Id)).ToList();
                toRemoveFragments.ForEach(item =>
                {
                    _kFragmentRepository.Delete(item, false);
                });
            }
            foreach (var fragmentModel in fragmentModels)
            {
                PKS_KFRAGMENT fragment = new PKS_KFRAGMENT();
                fragment.KTEMPLATEID = templateId;
                // fragment.KTEMPLATECATALOGUEID = fragmentModel.TemplateCatalogueId;
                fragment.TITLE              = fragmentModel.Title;
                fragment.QUERYPARAMETER     = fragmentModel.QueryParameter;
                fragment.COMPONENTPARAMETER = fragmentModel.ComponentParameter;
                fragment.HTMLTEXT           = fragmentModel.Htmltext;
                fragment.KFRAGMENTTYPEID    = fragmentModel.FragmentTypeId;
                fragment.PLACEHOLDERID      = fragmentModel.PlaceholderId;
                if (fragmentModel.Id > 0)
                {
                    fragment.Id = fragmentModel.Id;
                    _kFragmentRepository.Update(fragment, false);
                }
                else
                {
                    _kFragmentRepository.Add(fragment, false);
                }
            }
            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);
        }