private SitecoreEnvironment CreateSitecoreEnvironment(Tasker tasker, string sqlDbPrefix, string uninstallDataPath)
        {
            SitecoreEnvironment sitecoreEnvironment = new SitecoreEnvironment(sqlDbPrefix);

            sitecoreEnvironment.UnInstallDataPath = uninstallDataPath;
            sitecoreEnvironment.Members           = new List <SitecoreEnvironmentMember>();

            foreach (Task powerShellTask in tasker.Tasks)
            {
                InstallParam installParam = powerShellTask.LocalParams.FirstOrDefault(x => x.Name == SiteName);
                if (installParam != null && !string.IsNullOrEmpty(installParam.Value))
                {
                    Hashtable evaluatedLocalParams = tasker.GetEvaluatedLocalParams(powerShellTask.LocalParams, tasker.GlobalParams);
                    if (evaluatedLocalParams != null && evaluatedLocalParams[SiteName] != null)
                    {
                        sitecoreEnvironment.Members.Add(new SitecoreEnvironmentMember(evaluatedLocalParams[SiteName].ToString(),
                                                                                      SitecoreEnvironmentMember.Types.Site.ToString()));
                    }
                }
            }

            sitecoreEnvironment.Members = sitecoreEnvironment.Members.Distinct(new SitecoreEnvironmentMemberComparer()).ToList();

            return(sitecoreEnvironment);
        }
        private SitecoreEnvironment CreateEnvironment(string environmentName, string destinationFolder)
        {
            SitecoreEnvironment environment = new SitecoreEnvironment(environmentName, SitecoreEnvironment.EnvironmentType.Container);

            environment.UnInstallDataPath = destinationFolder;
            environment.Members           = GetEnvironmentMembers(environmentName, destinationFolder).ToList();

            return(environment);
        }
        private void AddEnvironment(SitecoreEnvironment environment)
        {
            foreach (SitecoreEnvironment se in SitecoreEnvironmentHelper.SitecoreEnvironments)
            {
                if (se.Name == environment.Name)
                {
                    return;
                }
            }

            SitecoreEnvironmentHelper.SitecoreEnvironments.Add(environment);
            SitecoreEnvironmentHelper.SaveSitecoreEnvironmentData(SitecoreEnvironmentHelper.SitecoreEnvironments);
        }
        private void AddSitecoreEnvironment(SitecoreEnvironment sitecoreEnvironment)
        {
            // Do not add new Sitecore environment if its name already exists in the Environments.json file
            foreach (SitecoreEnvironment se in SitecoreEnvironmentHelper.SitecoreEnvironments)
            {
                if (se.Name == sitecoreEnvironment.Name)
                {
                    return;
                }
            }

            SitecoreEnvironmentHelper.SitecoreEnvironments.Add(sitecoreEnvironment);
            SitecoreEnvironmentHelper.SaveSitecoreEnvironmentData(SitecoreEnvironmentHelper.SitecoreEnvironments);
        }
        public void OnClick(Window mainWindow, Instance instance)
        {
            if (instance != null)
            {
                var connectionString = ProfileManager.GetConnectionString();
                var args             = new DeleteArgs(instance, connectionString);
                args.OnCompleted += () => mainWindow.Dispatcher.Invoke(() => OnPipelineCompleted(args));
                var index = MainWindowHelper.GetListItemID(instance.ID);
                int version;
                if (int.TryParse(instance.Product.ShortVersion, out version) && version < 90)
                {
                    WizardPipelineManager.Start("delete", mainWindow, args, null, (ignore) => OnWizardCompleted(index, args.HasInstallationBeenCompleted), () => null);
                }
                else
                {
                    string uninstallPath    = string.Empty;
                    SitecoreEnvironment env = SitecoreEnvironmentHelper.GetExistingSitecoreEnvironment(instance.Name);
                    if (!string.IsNullOrEmpty(env?.UnInstallDataPath))
                    {
                        uninstallPath = env.UnInstallDataPath;
                    }
                    else
                    {
                        foreach (string installName in Directory.GetDirectories(ApplicationManager.UnInstallParamsFolder).OrderByDescending(s => s.Length))
                        {
                            if (instance.Name.StartsWith(Path.GetFileName(installName)))
                            {
                                uninstallPath = installName;
                                break;
                            }
                        }
                    }
                    if (string.IsNullOrEmpty(uninstallPath))
                    {
                        WindowHelper.ShowMessage("UnInstall files not found.");
                        return;
                    }

                    Delete9WizardArgs delete9WizardArgsargs = new Delete9WizardArgs(instance, connectionString, uninstallPath);
                    WizardPipelineManager.Start("delete9", mainWindow, null, null, (ignore) => OnWizardCompleted(index, delete9WizardArgsargs.HasInstallationBeenCompleted), () => delete9WizardArgsargs);
                }
            }
        }
        public void InitializeStep(WizardArgs wizardArgs)
        {
            var    args             = wizardArgs as ReinstallWizardArgs;
            string uninstallPath    = string.Empty;
            SitecoreEnvironment env = SitecoreEnvironmentHelper.GetExistingSitecoreEnvironment(args.Instance.Name);

            if (!string.IsNullOrEmpty(env?.UnInstallDataPath))
            {
                uninstallPath = env.UnInstallDataPath;
            }
            else
            {
                foreach (string installName in Directory.GetDirectories(ApplicationManager.UnInstallParamsFolder).OrderByDescending(s => s.Length))
                {
                    if (args.Instance.Name.StartsWith(Path.GetFileName(installName)))
                    {
                        uninstallPath = installName;
                        break;
                    }
                }
            }

            if (string.IsNullOrEmpty(uninstallPath))
            {
                WindowHelper.ShowMessage("UnInstall files not found.");
                wizardArgs.WizardWindow.Close();
            }

            Tasker       tasker    = new Tasker(uninstallPath);
            InstallParam sqlServer = tasker.GlobalParams.FirstOrDefault(p => p.Name == "SqlServer");

            if (sqlServer != null)
            {
                sqlServer.Value = args.ConnectionString.DataSource;
            }

            InstallParam sqlAdminUser = tasker.GlobalParams.FirstOrDefault(p => p.Name == "SqlAdminUser");

            if (sqlAdminUser != null)
            {
                sqlAdminUser.Value = args.ConnectionString.UserID;
            }

            InstallParam sqlAdminPass = tasker.GlobalParams.FirstOrDefault(p => p.Name == "SqlAdminPassword");

            if (sqlAdminPass != null)
            {
                sqlAdminPass.Value = args.ConnectionString.Password;
            }

            tasker.UnInstall = true;
            args.Tasker      = tasker;
            StringBuilder displayText = new StringBuilder();

            displayText.AppendLine("Reinstall:");
            foreach (var task in tasker.Tasks.Where(t => t.SupportsUninstall()))
            {
                displayText.AppendLine(string.Format(" -{0}", task.Name));
            }

            this.TextBlock.Text = displayText.ToString();
            args.InstanceName   = args.Tasker.GlobalParams.First(p => p.Name == "SqlDbPrefix").Value;
        }