BExIS.Web.Shell.Areas.DCM.Controllers.FormController.AddStepsBasedOnUsage C# (CSharp) Метод

AddStepsBasedOnUsage() приватный Метод

private AddStepsBasedOnUsage ( BaseUsage usage, StepInfo current, string parentXpath, StepModelHelper parent ) : StepInfo
usage BaseUsage
current BExIS.Dcm.Wizard.StepInfo
parentXpath string
parent BExIS.Web.Shell.Areas.DCM.Models.CreateDataset.StepModelHelper
Результат BExIS.Dcm.Wizard.StepInfo
        private StepInfo AddStepsBasedOnUsage(BaseUsage usage, StepInfo current, string parentXpath, StepModelHelper parent)
        {
            // genertae action, controller base on usage
            string actionName = "";
            string childName = "";
            int min = usage.MinCardinality;

            if (usage is MetadataPackageUsage)
            {
                actionName = "SetMetadataPackageInstanze";
                childName = ((MetadataPackageUsage)usage).MetadataPackage.Name;
            }
            else
            {
                actionName = "SetMetadataCompoundAttributeInstanze";

                if (usage is MetadataNestedAttributeUsage)
                    childName = ((MetadataNestedAttributeUsage)usage).Member.Name;

                if (usage is MetadataAttributeUsage)
                    childName = ((MetadataAttributeUsage)usage).MetadataAttribute.Name;

            }

            List<StepInfo> list = new List<StepInfo>();
            List<StepModelHelper> stepHelperModelList = (List<StepModelHelper>)TaskManager.Bus[CreateTaskmanager.METADATA_STEP_MODEL_HELPER];

            if (TaskManager.Bus.ContainsKey(CreateTaskmanager.METADATA_XML))
            {
                XDocument xMetadata = (XDocument)TaskManager.Bus[CreateTaskmanager.METADATA_XML];

                var x = new XElement("null");
                List<XElement> elements = new List<XElement>();

                Dictionary<string, string> keyValueDic = new Dictionary<string, string>();
                keyValueDic.Add("id", usage.Id.ToString());

                if (usage is MetadataPackageUsage)
                {
                    keyValueDic.Add("type", BExIS.Xml.Helpers.XmlNodeType.MetadataPackageUsage.ToString());
                    elements = XmlUtility.GetXElementsByAttribute(usage.Label, keyValueDic, xMetadata).ToList();
                }
                else
                {
                    keyValueDic.Add("type", BExIS.Xml.Helpers.XmlNodeType.MetadataAttributeUsage.ToString());
                    elements = XmlUtility.GetXElementsByAttribute(usage.Label, keyValueDic, xMetadata).ToList();
                }

                x = elements.FirstOrDefault();

                if (x != null && !x.Name.Equals("null"))
                {
                    IEnumerable<XElement> xelements = x.Elements();

                    if (xelements.Count() > 0)
                    {
                        int counter = 0;

                        foreach (XElement element in xelements)
                        {
                            counter++;
                            string title = counter.ToString(); //usage.Label+" (" + counter + ")";
                            long id = Convert.ToInt64((element.Attribute("roleId")).Value.ToString());

                            StepInfo s = new StepInfo(title)
                            {
                                Id = TaskManager.GenerateStepId(),
                                Parent = current,
                                IsInstanze = true,
                                HasContent = UsageHelper.HasUsagesWithSimpleType(usage),
                            };

                            string xPath = parentXpath + "//" + childName.Replace(" ", string.Empty) + "[" + counter + "]";

                            if (TaskManager.Root.Children.Where(z => z.title.Equals(title)).Count() == 0)
                            {
                                StepModelHelper newStepModelHelper = new StepModelHelper(s.Id, counter, usage, xPath, parent);
                                stepHelperModelList.Add(newStepModelHelper);

                                s.Children = GetChildrenSteps(usage, s, xPath, newStepModelHelper);

                                current.Children.Add(s);
                            }

                        }
                    }
                }

                //TaskManager.AddToBus(CreateDatasetTaskmanager.METADATAPACKAGE_IDS, MetadataPackageDic);
            }
            return current;
        }