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

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

private UpdateStepsBasedOnUsage ( BaseUsage usage, StepInfo currentSelected, string parentXpath ) : List
usage BaseUsage
currentSelected BExIS.Dcm.Wizard.StepInfo
parentXpath string
Результат List
        private List<StepInfo> UpdateStepsBasedOnUsage(BaseUsage usage, StepInfo currentSelected, string parentXpath)
        {
            // genertae action, controller base on usage
            string actionName = "";
            string childName = "";
            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 = XmlUtility.GetXElementByXPath(parentXpath, xMetadata);

                if (x != null && !x.Name.Equals("null"))
                {

                    StepInfo current = currentSelected;
                    IEnumerable<XElement> xelements = x.Elements();

                    if (xelements.Count() > 0)
                    {
                        int counter = 0;
                        foreach (XElement element in xelements)
                        {
                            counter++;
                            string title = counter.ToString();

                            if (current.Children.Where(s => s.title.Equals(title)).Count() == 0)
                            {
                                long id = Convert.ToInt64((element.Attribute("roleId")).Value.ToString());

                                StepInfo s = new StepInfo(title)
                                {
                                    Id = TaskManager.GenerateStepId(),
                                    Parent = current,
                                    IsInstanze = true,
                                    //GetActionInfo = new ActionInfo
                                    //{
                                    //    ActionName = actionName,
                                    //    ControllerName = "CreateSetMetadataPackage",
                                    //    AreaName = "DCM"
                                    //},

                                    //PostActionInfo = new ActionInfo
                                    //{
                                    //    ActionName = actionName,
                                    //    ControllerName = "CreateSetMetadataPackage",
                                    //    AreaName = "DCM"
                                    //}
                                };

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

                                s.Children = GetChildrenStepsUpdated(usage, s, xPath);
                                list.Add(s);

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

                                    stepHelperModelList.Add(newStepModelHelper);
                                }
                            }//end if
                        }//end foreach
                    }//end if
                }

            }
            return list;
        }