private NodeType activate_node_type(Guid applicationId, Guid currentUserId, string id, Guid?parentNodeTypeId = null) { TemplateNodeType tempNodeType = !NodeTypes.ContainsKey(id) ? null : NodeTypes[id]; if (tempNodeType == null) { return(null); } NodeType nodeType = new NodeType() { NodeTypeID = IDs.new_id(tempNodeType.ID), TemplateTypeID = IDs.get_id_from_template(tempNodeType.ID), Name = Base64.decode(tempNodeType.Name), ParentID = parentNodeTypeId, CreatorUserID = currentUserId }; if (!CNController.add_node_type(applicationId, nodeType)) { return(null); } if (tempNodeType.Extensions != null && tempNodeType.Extensions.Count > 0) { CNController.initialize_extensions(applicationId, nodeType.NodeTypeID.Value, currentUserId, ignoreDefault: true); CNController.save_extensions(applicationId, nodeType.NodeTypeID.Value, tempNodeType.Extensions, currentUserId); } CNController.initialize_service(applicationId, nodeType.NodeTypeID.Value); if (!string.IsNullOrEmpty(tempNodeType.ServiceTitle)) { CNController.set_service_title(applicationId, nodeType.NodeTypeID.Value, Base64.decode(tempNodeType.ServiceTitle)); } if (!string.IsNullOrEmpty(tempNodeType.ServiceDescription)) { CNController.set_service_description(applicationId, nodeType.NodeTypeID.Value, Base64.decode(tempNodeType.ServiceDescription)); } if (tempNodeType.NoContent.HasValue && tempNodeType.NoContent.Value) { CNController.no_content_service(applicationId, nodeType.NodeTypeID.Value, true); } if (tempNodeType.IsTree.HasValue && tempNodeType.IsTree.Value) { CNController.is_tree(applicationId, nodeType.NodeTypeID.Value, true); } if (tempNodeType.EnableContribution.HasValue && tempNodeType.EnableContribution.Value) { CNController.enable_contribution(applicationId, nodeType.NodeTypeID.Value, true); } if (tempNodeType.EnablePreviousVersionSelect.HasValue && tempNodeType.EnablePreviousVersionSelect.Value) { CNController.enable_previous_version_select(applicationId, nodeType.NodeTypeID.Value, true); } if (tempNodeType.DisableAbstractAndKeywords.HasValue && tempNodeType.DisableAbstractAndKeywords.Value) { CNController.abstract_and_keywords_disabled(applicationId, nodeType.NodeTypeID.Value, true); } if (tempNodeType.DisableFileUpload.HasValue && tempNodeType.DisableFileUpload.Value) { CNController.file_upload_disabled(applicationId, nodeType.NodeTypeID.Value, true); } if (tempNodeType.DisableRelatedNodesSelect.HasValue && tempNodeType.DisableRelatedNodesSelect.Value) { CNController.related_nodes_select_disabled(applicationId, nodeType.NodeTypeID.Value, true); } if (!string.IsNullOrEmpty(tempNodeType.FormID) && tempNodeType.Extensions.Any(e => e.ExtensionType == ExtensionType.Form)) { FormType form = activate_form(applicationId, currentUserId, tempNodeType.FormID); if (form != null) { FGController.set_form_owner(applicationId, nodeType.NodeTypeID.Value, form.FormID.Value, currentUserId); } } if (tempNodeType.ChildrenIDs != null && tempNodeType.ChildrenIDs.Count > 0) { tempNodeType.ChildrenIDs .ForEach(cId => activate_node_type(applicationId, currentUserId, cId, parentNodeTypeId: nodeType.NodeTypeID)); } activate_node_type_icon(applicationId, id); return(nodeType); }
private void add_node_type(Guid?nodeTypeId) { if (!RefAppID.HasValue || !nodeTypeId.HasValue || !RaaiVanSettings.SAASBasedMultiTenancy) { return; } //get new id string newNtId = IDs.resolve(nodeTypeId); if (NodeTypes.ContainsKey(newNtId)) { return; } //end of get new id Guid appId = RefAppID.Value; Guid ntId = nodeTypeId.Value; NodeType nodeType = CNController.get_node_type(appId, ntId); if (nodeType == null || string.IsNullOrEmpty(nodeType.Name)) { return; } Service service = CNController.get_service(appId, ntId); if (service == null) { service = new Service(); } List <Extension> extensions = CNController.get_extensions(appId, ntId) .Where(ex => !ex.Disabled.HasValue || !ex.Disabled.Value).ToList(); FormType form = FGController.get_owner_form(appId, ntId); List <FormElement> formElements = form == null || !form.FormID.HasValue ? new List <FormElement>() : FGController.get_form_elements(appId, form.FormID.Value); TemplateNodeType newNodeType = new TemplateNodeType() { ID = newNtId, Name = Base64.encode(nodeType.Name), ServiceTitle = Base64.encode(service.Title), ServiceDescription = Base64.encode(service.Description), Extensions = extensions, FormID = form == null ? null : IDs.resolve(form.FormID), NoContent = service.NoContent, IsTree = service.IsTree, EnableContribution = service.EnableContribution, EnablePreviousVersionSelect = service.EnablePreviousVersionSelect, DisableAbstractAndKeywords = service.DisableAbstractAndKeywords, DisableFileUpload = service.DisableFileUpload, DisableRelatedNodesSelect = service.DisableRelatedNodesSelect }; NodeTypes[newNtId] = newNodeType; if (form != null && form.FormID.HasValue) { add_dependency(ntId, form.FormID); add_form(form, formElements); } List <NodeType> children = CNController.get_child_node_types(appId, nodeTypeId.Value); if (children != null && children.Count > 0) { newNodeType.ChildrenIDs = children.Select(c => IDs.resolve(c.NodeTypeID)).ToList(); children.ForEach(c => add_node_type(c.NodeTypeID)); } }