public void CancelCommand_Executed_DatabaseConnection()
        {
            // Arrange
            var  dbConnection   = new DatabaseConnectionModel();
            var  closeRequested = false;
            bool?dialogResult   = null;
            var  vsa            = Mock.Of <IVisualStudioAccess>();
            var  psdFactory     = Mock.Of <Func <IPickSchemasDialog> >();
            var  vm             = new PickServerDatabaseViewModel(vsa, psdFactory)
            {
                SelectedDatabaseConnection = dbConnection
            };

            vm.CloseRequested += (sender, args) =>
            {
                closeRequested = true;
                dialogResult   = args.DialogResult;
            };

            // Act
            vm.CancelCommand.Execute(null);

            // Assert
            Assert.IsTrue(closeRequested);
            Assert.IsFalse(dialogResult);
            Assert.IsNull(vm.SelectedDatabaseConnection);
            Assert.IsNull(vm.SelectedDatabaseDefinition);
        }
 public DeploymentConnectionViewModel(ProjectModel project, string key, DatabaseConnectionModel connection) : base(key, null)
 {
     Key = key;
     ComboConnections = new Connections.ConnectionComboViewModel(project);
     ComboConnections.LoadConnections <DatabaseConnectionModel>();
     ComboConnections.SelectConnection(connection);
 }
Exemple #3
0
        private IEnumerable <LabelEntity> MarkLabelsAsProcessedAndGetMissing(DatabaseConnectionModel connectionModel1,
                                                                             DatabaseConnectionModel connectionModel2,
                                                                             LabelsGeneratorDbTables tables,
                                                                             DateTime date)
        {
            using (var context1 = _contextFactory.GetContext(connectionModel1, tables))
                using (var context2 = _contextFactory.GetContext(connectionModel2, tables))
                {
                    var reportId = Guid.NewGuid();

                    var startDate = date.StartOfDay();
                    var endDate   = date.EndOfDayForDatabase();

                    var labels           = context1.Set <LabelEntity>().Where(x => x.Status == 0 && x.CreateDate >= startDate && x.CreateDate <= endDate).ToArray();
                    var labelIdentifiers = labels.Select(x => x.UniqueID.Trim()).ToArray();

                    var identifiers = context2.Set <CustomerEntity>().Where(x => labelIdentifiers.Contains(x.UniqueID.Trim())).Select(x => x.UniqueID.Trim()).ToArray();
                    var foundLabels = labels.Where(x => identifiers.Contains(x.UniqueID.Trim())).ToArray();
                    foreach (var label in foundLabels)
                    {
                        label.Status = 1;
                    }
                    context1.SaveChanges();

                    var notFoundLabels = labels.Where(x => !identifiers.Contains(x.UniqueID.Trim())).ToArray();
                    return(notFoundLabels);
                }
        }
Exemple #4
0
        private DatabaseConnectionModel GetDatabaseInfo(ReverseEngineerOptions options)
        {
            ThreadHelper.ThrowIfNotOnUIThread();

            var dbInfo = new DatabaseConnectionModel();

            if (!string.IsNullOrEmpty(options.ConnectionString))
            {
                dbInfo.ConnectionString = options.ConnectionString;
                dbInfo.DatabaseType     = options.DatabaseType;
            }

            if (!string.IsNullOrEmpty(options.Dacpac))
            {
                dbInfo.DatabaseType      = DatabaseType.SQLServerDacpac;
                dbInfo.ConnectionString  = $"Data Source=(local);Initial Catalog={Path.GetFileNameWithoutExtension(options.Dacpac)};Integrated Security=true;";
                options.ConnectionString = dbInfo.ConnectionString;
                options.DatabaseType     = dbInfo.DatabaseType;

                options.Dacpac = _package.Dte2.DTE.BuildSqlProj(options.Dacpac);
                if (string.IsNullOrEmpty(options.Dacpac))
                {
                    EnvDteHelper.ShowMessage(ReverseEngineerLocale.UnableToBuildSelectedDatabaseProject);
                    return(null);
                }
            }

            if (dbInfo.DatabaseType == DatabaseType.Undefined)
            {
                EnvDteHelper.ShowError($"{ReverseEngineerLocale.UnsupportedProvider}");
                return(null);
            }

            return(dbInfo);
        }
Exemple #5
0
        /// <summary>
        /// Insert NEW Connection
        /// </summary>
        /// <param name="dcm"></param>
        /// <returns></returns>
        public int InsertConnection(DatabaseConnectionModel dcm)
        {
            int result = -1;

            using (SQLiteConnection conn = new SQLiteConnection(this._conn))
            {
                conn.Open();
                using (SQLiteCommand cmd = new SQLiteCommand(conn))
                {
                    cmd.CommandText = "INSERT INTO conexoes(server,username,password,database) VALUES (@server,@username,@password,@database)";
                    cmd.Prepare();
                    cmd.Parameters.AddWithValue("@server", dcm.Server);
                    cmd.Parameters.AddWithValue("@username", dcm.Username);
                    cmd.Parameters.AddWithValue("@password", dcm.Password);
                    cmd.Parameters.AddWithValue("@database", dcm.Database);
                    try
                    {
                        result = cmd.ExecuteNonQuery();
                    }
                    catch (SQLiteException ex)
                    {
                        throw ex;
                    }
                    finally
                    {
                        conn.Close();
                    }
                }
            }
            return(result);
        }
Exemple #6
0
        public void SaveCredential_Get_DeleteCredential()
        {
            CredentialStore credentialStore = new CredentialStore();

            var databaseConnection = new DatabaseConnectionModel
            {
                ConnectionName   = "test",
                ConnectionString = "Data Source=test",
                DatabaseType     = DatabaseType.SQLite,
                DataConnection   = null,
            };

            var saved = credentialStore.SaveCredential(databaseConnection);

            Assert.IsTrue(saved);

            var connections = credentialStore.GetStoredDatabaseConnections();

            Assert.AreEqual(1, connections.Count);
            Assert.AreEqual("test", connections[0].ConnectionName);
            Assert.AreEqual("Data Source=test", connections[0].ConnectionString);
            Assert.AreEqual(DatabaseType.SQLite, connections[0].DatabaseType);

            var deleted = credentialStore.DeleteCredential("test");

            Assert.IsTrue(deleted);
        }
        public void OkCommand_Executed_CloseRequestedToView_DatabaseConnection()
        {
            // Arrange
            var  dbConnection   = new DatabaseConnectionModel();
            var  closeRequested = false;
            bool?dialogResult   = null;
            var  vsa            = Mock.Of <IVisualStudioAccess>();
            var  vm             = new PickServerDatabaseViewModel(vsa)
            {
                SelectedDatabaseConnection = dbConnection
            };

            vm.CloseRequested += (sender, args) =>
            {
                closeRequested = true;
                dialogResult   = args.DialogResult;
            };

            // Act
            vm.OkCommand.Execute(null);

            // Assert
            Assert.IsTrue(closeRequested);
            Assert.IsTrue(dialogResult);
            Assert.AreSame(dbConnection, vm.SelectedDatabaseConnection);
            Assert.IsNull(vm.SelectedDatabaseDefinition);
        }
Exemple #8
0
        public void LoadedCommand_Executed_DatabaseConnectionsAndDefinitions()
        {
            // Arrange
            var vsa           = Mock.Of <IVisualStudioAccess>();
            var psdFactory    = Mock.Of <Func <IPickSchemasDialog> >();
            var connFactory   = Mock.Of <Func <IPickConnectionDialog> >();
            var creds         = Mock.Of <ICredentialStore>();
            var vm            = new PickServerDatabaseViewModel(vsa, creds, psdFactory, connFactory);
            var dbConnection1 = new DatabaseConnectionModel();
            var dbConnection2 = new DatabaseConnectionModel();
            var dbDefinition1 = new DatabaseDefinitionModel();
            var dbDefinition2 = new DatabaseDefinitionModel();

            vm.DatabaseConnections.Add(dbConnection1);
            vm.DatabaseConnections.Add(dbConnection2);
            vm.DatabaseDefinitions.Add(dbDefinition1);
            vm.DatabaseDefinitions.Add(dbDefinition2);

            // Act
            vm.LoadedCommand.Execute(null);

            // Assert
            Assert.AreSame(dbConnection1, vm.SelectedDatabaseConnection);
            Assert.IsNull(vm.SelectedDatabaseDefinition);
        }
Exemple #9
0
        /// <summary>
        /// Marks all labels found in dbo.isCUSTOMER table with status = 1 and generates report with not found ones
        /// </summary>
        /// <param name="connectionModel1">The labels DB connection model</param>
        /// <param name="connectionModel2">The customer DB connection model</param>
        /// <param name="date">The current date</param>
        public XLWorkbook MarkLabelsProcessedAndGenerateReport(DatabaseConnectionModel connectionModel1,
                                                               DatabaseConnectionModel connectionModel2,
                                                               LabelsGeneratorDbTables tables,
                                                               DateTime date,
                                                               out Boolean isReportContainData)
        {
            var labels = MarkLabelsAsProcessedAndGetMissing(connectionModel1, connectionModel2, tables, date);

            return(GenerateReport(labels, out isReportContainData));
        }
Exemple #10
0
        private async Task <List <TableModel> > GetTablesAsync(DatabaseConnectionModel dbInfo, CodeGenerationMode codeGenerationMode, SchemaInfo[] schemas)
        {
            if (dbInfo.DataConnection != null)
            {
                dbInfo.DataConnection.Open();
                dbInfo.ConnectionString = DataProtection.DecryptString(dbInfo.DataConnection.EncryptedConnectionString);
            }

            var builder = new TableListBuilder(dbInfo.ConnectionString, dbInfo.DatabaseType, schemas);

            return(await builder.GetTableDefinitionsAsync(codeGenerationMode));
        }
        private async Task <List <TableModel> > GetTablesAsync(DatabaseConnectionModel dbInfo, bool useEFCore5, SchemaInfo[] schemas)
        {
            if (dbInfo.DataConnection != null)
            {
                dbInfo.DataConnection.Open();
                dbInfo.ConnectionString = DataProtection.DecryptString(dbInfo.DataConnection.EncryptedConnectionString);
            }

            var builder = new TableListBuilder(dbInfo.ConnectionString, dbInfo.DatabaseType, schemas);

            return(await System.Threading.Tasks.Task.Run(() => builder.GetTableDefinitions(useEFCore5)));
        }
        /// <summary>
        ///		Cambia los parámetros básicos de la base de datos cuando se cambia el tipo
        /// </summary>
        private void AssignDataBaseParameters()
        {
            if (ConnectionTypes.IsSelected())
            {
                DatabaseConnectionModel.DataBaseType type = ConnectionTypes.GetSelectedItemTyped(DatabaseConnectionModel.DataBaseType.Odbc);

                IsServerConnection       = DatabaseConnectionModel.CheckIsServerConnection(type);
                UseConnectionString      = DatabaseConnectionModel.CheckUseConnectionString(type);
                CanUseIntegratedSecurity = DatabaseConnectionModel.CheckCanUserIntegratedSecurity(type);
                IsTemporalDataBase       = type == DatabaseConnectionModel.DataBaseType.SqLite;
                Port = DatabaseConnectionModel.GetDefaultPort(type);
            }
        }
Exemple #13
0
        public bool SaveCredential(DatabaseConnectionModel connectionModel)
        {
            var cred = new NetworkCredential(connectionModel.ConnectionName, connectionModel.ConnectionString).ToICredential();

            cred.TargetName = Root + connectionModel.ConnectionName;
            cred.Attributes = new Dictionary <string, object>
            {
                { nameof(DatabaseType), (int)connectionModel.DatabaseType },
            };
            cred.Persistance = Persistance.LocalMachine;
            cred.Type        = CredentialType.Generic;
            return(cred.SaveCredential());
        }
Exemple #14
0
        /// <summary>
        ///		Abre el formulario de mantenimiento de una conexión
        /// </summary>
        private void OpenFormConnection(DatabaseConnectionModel connection)
        {
            DataBaseConnectionViewModel viewModel = new DataBaseConnectionViewModel(connection);

            if (MainViewModel.Instance.ViewsController.OpenConnectionView(viewModel))
            {
                // Añade la conexión si no existía
                if (connection == null)
                {
                    Project.Connections.Add(viewModel.Connection);
                }
                // Graba el proyecto y actualiza
                Save();
            }
        }
Exemple #15
0
        /// <summary>
        ///		Carga los nodos de esquema
        /// </summary>
        private void LoadSchemaNodes(ExplorerProjectNodeViewModel node, DatabaseConnectionModel connection)
        {
            try
            {
                SchemaDbModel schema = new Application.Providers.DataProvider().LoadSchema(connection);

                LoadSchemaNodes(node, "Tablas", schema.Tables, NodeType.TablesRoot, NodeType.Table);
                LoadSchemaNodes(node, "Vistas", schema.Views, NodeType.ViewsRoot, NodeType.Connection);
                AddNode(node, "Procedimientos", null, true, MvvmColor.Red, MainViewModel.Instance.ViewsController.GetIcon(NodeType.ProceduresRoot));
            }
            catch (Exception exception)
            {
                MainViewModel.Instance.ControllerWindow.ShowMessage($"Error al cargar el esquema {exception.Message}");
            }
        }
 public DataBaseConnectionViewModel(DatabaseConnectionModel connection)
 {
     // Inicializa los datos principales
     IsNew = connection == null;
     if (connection == null)
     {
         Connection = new DatabaseConnectionModel();
     }
     else
     {
         Connection = connection;
     }
     // Inicializa el viewModel
     InitViewModel();
 }
Exemple #17
0
        public ActionResult Step2(DatabaseConnectionModel model)
        {
            try
            {
                var validator         = new FluentBaseValidator <DatabaseConnectionModel, DatabaseConnectionRules>(model);
                var validationResults = validator.Validate();
                if (!validator.IsValid)
                {
                    throw new CustomValidationException(Messages.DangerInvalidEntitiy)
                          {
                              ValidationResult = validationResults
                          };
                }


                using (var context = new InstallationDatabaseContext())
                {
                    _installerLanguage = new LanguageInstaller(new Repository <Language>(context));
                    if (_installerLanguage.Exists())
                    {
                        return(RedirectToAction("Step3"));
                    }
                    foreach (var language in _installerLanguage.GetList())
                    {
                        _installerLanguage.Add(language);
                    }

                    return(RedirectToAction("Step3"));
                }
            }

            catch (CustomValidationException exception)
            {
                var validationResult = exception.ValidationResult;
                foreach (var t in validationResult)
                {
                    ModelState.AddModelError(t.PropertyName, t.ErrorMessage);
                }
            }

            catch (SqlException exception)
            {
                model.HasError = true;
                model.Message  = "Veritabanına bağlanılamadı. Lütfen bilgilerinizi kontrol ediniz." + exception.Message;
            }

            return(View(model));
        }
Exemple #18
0
        /// <summary>
        ///		Obtiene el esquema de una conexión
        /// </summary>
        private IDataProvider GetProvider(DatabaseConnectionModel connection)
        {
            switch (connection.Type)
            {
            case DatabaseConnectionModel.DataBaseType.SqLite:
                return(new ScriptsSqLiteProvider(connection.Name, connection.Type.ToString(), connection.FileName));

            case DatabaseConnectionModel.DataBaseType.SqlServer:
                return(new ScriptsSqlServerProvider(connection.Name, connection.Type.ToString(), connection.Server,
                                                    connection.Port, connection.DataBase, connection.User,
                                                    connection.Password, connection.IntegratedSecurity));

            default:
                return(null);
            }
        }
Exemple #19
0
        public ViewResult Step2()
        {
            var connectionString = ConfigurationManager.ConnectionStrings["InstallationDatabaseContext"].ConnectionString;
            var keyValuePairs    = connectionString.Split(';').Select(s => s.Split('=')).Select(connectionStringArray => new KeyValuePair <string, string>(connectionStringArray[0].Trim(), connectionStringArray[1].Trim())).ToList();

            var model = new DatabaseConnectionModel
            {
                DataSource     = keyValuePairs.FirstOrDefault(x => x.Key == "Data Source").Value,
                InitialCatalog = keyValuePairs.FirstOrDefault(x => x.Key == "Initial Catalog").Value,
                UserId         = keyValuePairs.FirstOrDefault(x => x.Key == "User ID").Value,
                Password       = keyValuePairs.FirstOrDefault(x => x.Key == "Password").Value,
                Message        = ""
            };

            return(View(model));
        }
        public void OkCommand_CanExecute_ConnectionSelected()
        {
            // Arrange
            var dbConnection = new DatabaseConnectionModel();
            var vsa          = Mock.Of <IVisualStudioAccess>();
            var vm           = new PickServerDatabaseViewModel(vsa)
            {
                SelectedDatabaseConnection = dbConnection
            };

            // Act
            var canExecute = vm.OkCommand.CanExecute(null);

            // Assert
            Assert.IsTrue(canExecute);
        }
        public void LoadedCommand_Executed()
        {
            // Arrange
            var vsa           = Mock.Of <IVisualStudioAccess>();
            var vm            = new PickServerDatabaseViewModel(vsa);
            var dbConnection1 = new DatabaseConnectionModel();
            var dbConnection2 = new DatabaseConnectionModel();

            vm.DatabaseConnections.Add(dbConnection1);
            vm.DatabaseConnections.Add(dbConnection2);

            // Act
            vm.LoadedCommand.Execute(null);

            // Assert
            Assert.AreSame(dbConnection1, vm.SelectedDatabaseConnection);
        }
Exemple #22
0
        public async Task <IActionResult> Index(DatabaseConnectionModel model)
        {
            if (ModelState.IsValid)
            {
                try {
                    await this.ServiceDatabase.TestConnectionAsync(model.ConnectionString);

                    this.ServiceConnection.SetDatabaseConnection(model);

                    return(RedirectToAction("Server", new { serveur = model.Server.Replace("\\", "-") }));
                } catch (Exception e) {
                    ModelState.AddModelError(string.Empty, e.Message);
                }
            }

            return(View(model));
        }
Exemple #23
0
        /// <summary>
        ///		Obtiene los datos de un nodo para una conexión
        /// </summary>
        private MLNode GetMLConnection(DatabaseConnectionModel connection)
        {
            MLNode rootML = GetMLNodeBase(TagDataBaseConnection, connection);

            // Asigna las propiedades
            rootML.Attributes.Add(TagType, connection.Type.ToString());
            rootML.Attributes.Add(TagServer, connection.Server);
            rootML.Attributes.Add(TagPort, connection.Port);
            rootML.Attributes.Add(TagUser, connection.User);
            rootML.Attributes.Add(TagPassword, connection.Password);
            rootML.Attributes.Add(TagIntegratedSecurity, connection.IntegratedSecurity);
            rootML.Attributes.Add(TagDataBase, connection.DataBase);
            rootML.Nodes.Add(TagFilename, connection.FileName);
            rootML.Nodes.Add(TagConnectionString, connection.ConnectionString);
            // Devuelve el nodo de conexión
            return(rootML);
        }
Exemple #24
0
        public void OkCommand_CanExecute_ConnectionSelected()
        {
            // Arrange
            var dbConnection = new DatabaseConnectionModel();
            var vsa          = Mock.Of <IVisualStudioAccess>();
            var psdFactory   = Mock.Of <Func <IPickSchemasDialog> >();
            var connFactory  = Mock.Of <Func <IPickConnectionDialog> >();
            var vm           = new PickServerDatabaseViewModel(vsa, psdFactory, connFactory)
            {
                SelectedDatabaseConnection = dbConnection
            };

            // Act
            var canExecute = vm.OkCommand.CanExecute(null);

            // Assert
            Assert.IsTrue(canExecute);
        }
Exemple #25
0
        /// <summary>
        ///		Carga los datos de una conexión
        /// </summary>
        private DatabaseConnectionModel LoadConnection(MLNode rootML)
        {
            DatabaseConnectionModel connection = new DatabaseConnectionModel();

            // Asigna las propiedades
            LoadBase(rootML, connection);
            connection.Type               = rootML.Attributes[TagType].Value.GetEnum(DatabaseConnectionModel.DataBaseType.Odbc);
            connection.Server             = rootML.Attributes[TagServer].Value;
            connection.Port               = rootML.Attributes[TagPort].Value.GetInt(0);
            connection.User               = rootML.Attributes[TagUser].Value;
            connection.Password           = rootML.Attributes[TagPassword].Value;
            connection.IntegratedSecurity = rootML.Attributes[TagIntegratedSecurity].Value.GetBool();
            connection.DataBase           = rootML.Attributes[TagDataBase].Value;
            connection.FileName           = rootML.Nodes[TagFilename].Value;
            connection.ConnectionString   = rootML.Nodes[TagConnectionString].Value;
            // Devuelve la conexión creada
            return(connection);
        }
        public void AddDatabaseConnectionCommand_Executed_NewConnectionReturned()
        {
            // Arrange
            var dbConnection = new DatabaseConnectionModel();
            var vsaMock      = new Mock <IVisualStudioAccess>();

            vsaMock.Setup(m => m.PromptForNewDatabaseConnection()).Returns(dbConnection);
            var vm = new PickServerDatabaseViewModel(vsaMock.Object);

            // Act
            vm.AddDatabaseConnectionCommand.Execute(null);

            // Assert
            CollectionAssert.Contains(vm.DatabaseConnections, dbConnection);
            Assert.AreSame(dbConnection, vm.SelectedDatabaseConnection);
            vsaMock.Verify(m => m.PromptForNewDatabaseConnection(), Times.Once);
            vsaMock.Verify(m => m.ShowMessage(It.IsNotNull <string>()), Times.Never);
        }
Exemple #27
0
        public void PropertyChanged_NotInvokedForEqualValues()
        {
            // Arrange
            var invokes = 0;
            var dcm     = new DatabaseConnectionModel();

            dcm.PropertyChanged += (sender, args) => invokes++;

            // Act
            dcm.ConnectionName   = null;
            dcm.ConnectionString = null;
            dcm.DatabaseType     = DatabaseType.Undefined;

            // Assert
            Assert.AreEqual(0, invokes);
            Assert.IsNull(dcm.ConnectionName);
            Assert.IsNull(dcm.ConnectionString);
            Assert.AreEqual(DatabaseType.Undefined, dcm.DatabaseType);
        }
        public void Selection_OnlyConnectionOrDefinitionSelected_DatabaseDefinition()
        {
            // Arrange
            var dbConnection = new DatabaseConnectionModel();
            var dbDefinition = new DatabaseDefinitionModel();
            var vsa          = Mock.Of <IVisualStudioAccess>();
            // ReSharper disable once UseObjectOrCollectionInitializer
            var vm = new PickServerDatabaseViewModel(vsa)
            {
                SelectedDatabaseConnection = dbConnection
            };

            // Act
            vm.SelectedDatabaseDefinition = dbDefinition;

            // Assert
            Assert.IsNull(vm.SelectedDatabaseConnection);
            Assert.AreSame(dbDefinition, vm.SelectedDatabaseDefinition);
        }
Exemple #29
0
        private DatabaseConnectionModel GetDatabaseConnectionModel(ICredential credential)
        {
            try
            {
                var result = new DatabaseConnectionModel
                {
                    ConnectionName   = credential.TargetName.Substring(5),
                    ConnectionString = credential.ToNetworkCredential().Password,
                    DatabaseType     = (DatabaseType)credential.Attributes[nameof(DatabaseType)],
                };

                return(result);
            }
            catch
            {
                // Ignore
            }

            return(null);
        }
Exemple #30
0
        public void AddDatabaseConnectionCommand_Executed_NewConnectionReturned()
        {
            // Arrange
            var dbConnection = new DatabaseConnectionModel();
            var vsaMock      = new Mock <IVisualStudioAccess>();
            var psdFactory   = Mock.Of <Func <IPickSchemasDialog> >();
            var connFactory  = Mock.Of <Func <IPickConnectionDialog> >();
            var creds        = Mock.Of <ICredentialStore>();

            vsaMock.Setup(m => m.PromptForNewDatabaseConnection()).Returns(dbConnection);
            var vm = new PickServerDatabaseViewModel(vsaMock.Object, creds, psdFactory, connFactory);

            // Act
            vm.AddDatabaseConnectionCommand.Execute(null);

            // Assert
            CollectionAssert.Contains(vm.DatabaseConnections, dbConnection);
            Assert.AreSame(dbConnection, vm.SelectedDatabaseConnection);
            vsaMock.Verify(m => m.PromptForNewDatabaseConnection(), Times.Once);
            vsaMock.Verify(m => m.ShowMessage(It.IsNotNull <string>()), Times.Never);
        }