public void Update(InstallationInfo installationInfo)
        {
            IProjectConfiguration config = _configProvider.GetConfig();

            config.UpdateAppSettings("IMPERSONATION_SIDID", installationInfo.UserSid.ToString(CultureInfo.InvariantCulture));
            config.UpdateAppSettings("ProductVersion", installationInfo.Version);

            config.Save();
        }
        private static void GetUserRolesInfo(InstallationInfo info, SqlConnection connection)
        {
            SqlCommand command = new SqlCommand("Select * from UserRoles Where [RoleID] = 1 Or [RoleID] = 100", connection);

            using (SqlDataReader reader = command.ExecuteReader())
            {
                if (reader.Read())
                {
                    info.UserSid = (int)reader["UserID"];
                }
            }
        }
        private static void GetKeyValueInfo(InstallationInfo info, SqlConnection connection)
        {
            SqlCommand command = new SqlCommand("Select * from KeyValue Where [key] = 'UI_VERSION'", connection);

            using (SqlDataReader reader = command.ExecuteReader())
            {
                if (reader.Read())
                {
                    info.Version = (string)reader["Value"];
                }
            }
        }
        public InstallationInfo Read()
        {
            IProjectConfiguration config = _configProvider.GetConfig();

            string impersonationSidId = config.GetValue("IMPERSONATION_SIDID");

            InstallationInfo installationInfo = new InstallationInfo();
            installationInfo.UserSid = string.IsNullOrEmpty(impersonationSidId)? 0: int.Parse(impersonationSidId);
            installationInfo.Version = config.GetValue("ProductVersion");

            return installationInfo;
        }
        public InstallationInfo GetLabInfo(string domainDbConnectionString)
        {
            InstallationInfo info = new InstallationInfo();

            using(SqlConnection connection = new SqlConnection(domainDbConnectionString))
            {
                connection.Open();

                GetKeyValueInfo(info, connection);

                GetUserRolesInfo(info, connection);

                connection.Close();
            }

            return info;
        }
        public void UpdateConfigsCommandIsExecuted_ItChecksOutAndUpdatesTheConfigFiles()
        {
            var filledConnectionInfo = new ConnectionInfo()
            {
                Host = "expectedHost",
                DataSource = "expectedDataSource",
                Instance = "expectedInstance",
                UserName = "******",
                Password = "******"
            };

            var installationInfo = new InstallationInfo()
            {
                UserSid = 123,
                Version = "3.4.5"
            };

            DeleteBranchFolder();
            DeployBranchFolder();
            ChangeCurrentDirectoryToDaSourceFolder();

            ConnectionResolverViewModel viewModel = CreateViewModel();

            viewModel.InputConnectionDetails = new ConnectionInfoViewModel(filledConnectionInfo);
            viewModel.SelectedLabInfoViewModel = new LabInfoViewModel(new LabInfo(filledConnectionInfo, installationInfo));

            viewModel.UpdateConfigsCommand.Execute(null);

            Configuration daConfiguration = OpenConfig(@"Windows\DataVantage.Windows\app.config");
            Configuration mcConfiguration = OpenConfig(@"..\..\ManagementConsole\Source\Varonis.UI.ManagementConsole.Shell\app.config");
            Configuration serverConfiguration = OpenConfig(@"..\..\Server\Source\Varonis.Server.WindowsService\app.config");

            Assert.AreEqual("3.4.5", daConfiguration.AppSettings.Settings["ProductVersion"].Value);
            Assert.AreEqual("123", daConfiguration.AppSettings.Settings["IMPERSONATION_SIDID"].Value);
            Assert.AreEqual("3.4.5", mcConfiguration.AppSettings.Settings["ProductVersion"].Value);
            Assert.AreEqual("123", mcConfiguration.AppSettings.Settings["IMPERSONATION_SIDID"].Value);
            Assert.AreEqual(@"Data Source=expectedDataSource\expectedInstance;Integrated Security=False;User ID=expectedUserName;Password=expectedPasseword",
                ((ConnectionStringsSection)serverConfiguration.GetSection("connectionStrings")).ConnectionStrings["vrnsDomainDB"].ConnectionString);

            RestoreCurrentFolder();
            DeleteBranchFolder();
        }
 public LabInfo(ConnectionInfo connectionInfo, InstallationInfo installationInfo)
 {
     ConnectionInfo = connectionInfo;
     InstallationInfo = installationInfo;
 }