public static dynamic GetTSObject(ComponentFilterExpressions dynObject)
 {
     if (dynObject is null)
     {
         return(null);
     }
     return(dynObject.teklaObject);
 }
        public void BranchDeployment()
        {
            if (!CanBranchDeployment)
            {
                return;
            }

            IsLoadingData = true;
            Task.Factory.StartNew(() =>
            {
                try
                {
                    var deploymentPlanner = new OctopusDeploymentPlanner(_octopusUrl, _octopusApiKey);
                    var componentFilter   = new ComponentFilter
                    {
                        Expressions = ComponentFilterExpressions.Select(x => x.Text).ToList(),
                        Include     = ComponentFilterInclude
                    };

                    var branchDeploymentPlans = deploymentPlanner.GetBranchDeploymentPlans(_selectedBranchDeploymentEnvironment.Name, _selectedBranchDeploymentBranch.Name, _doNotUseDifferentialDeploymentForBranchDeployment, componentFilter);
                    EnvironmentDeploymentPlan = branchDeploymentPlans.EnvironmentDeploymentPlan;

                    var deploymentScheduler = new DeploymentScheduler();

                    var componentGraph = deploymentScheduler.GetComponentDeploymentGraph(EnvironmentDeploymentPlan);
                    Graph = componentGraph.ToBidirectionalGraph();
                    EnvironmentDeployment             = deploymentScheduler.GetEnvironmentDeployment(componentGraph);
                    EnvironmentDeploymentSaveFileName = "branch " + _selectedBranchDeploymentBranch.Name + " to " + _selectedBranchDeploymentEnvironment.Name + ".json";
                    EnvironmentToDeployTo             = _selectedBranchDeploymentEnvironment;
                }
                catch
                {
                    EnvironmentDeploymentPlan = new EnvironmentDeploymentPlan(new List <ComponentDeploymentPlan>());
                    Graph = null;
                    EnvironmentDeployment             = new EnvironmentDeployment(new List <ProductDeployment>());
                    EnvironmentDeploymentSaveFileName = string.Empty;
                    EnvironmentToDeployTo             = null;
                }
            }).ContinueWith(task =>
            {
                IsLoadingData = false;
            });
        }
        public void SaveComponentFilterJson()
        {
            var saveFileDialog = new SaveFileDialog
            {
                DefaultExt = "json",
                Filter     = "Text files (*.json)|*.json|All files (*.*)|*.*",
                FileName   = ComponentFilterSaveFileName
            };

            if (saveFileDialog.ShowDialog() != true)
            {
                return;
            }

            var componentFilter = new ComponentFilter()
            {
                Include     = ComponentFilterInclude,
                Expressions = ComponentFilterExpressions.Select(x => x.Text).ToList()
            };

            var json = JsonConvert.SerializeObject(componentFilter, Formatting.Indented);

            File.WriteAllText(saveFileDialog.FileName, json);
        }