Example #1
0
        private async Task SetSelectViewBag(DatabaseGDR databaseGDR)
        {
            //Busca bancos de dados
            List <Report> reportsSelect = await reportRepository.GetList(EnableEnum.Enabled);

            List <Report> reportSelected = databaseGDR.ReportDatabaseGDR.Select(x => x.Report).ToList();

            reportsSelect = reportsSelect.Except(reportSelected, new ReportIdComparer()).ToList();


            ViewBag.ReportId = reportsSelect.Select(x => new SelectListItem
            {
                Text  = x.Name,
                Value = x.Id.ToString()
            }).ToList();

            ViewBag.ReportIdSelected = reportSelected.Select(x => new SelectListItem
            {
                Text  = x.Name,
                Value = x.Id.ToString()
            }).ToList();


            ViewBag.EnableSelect   = databaseGDRRepository.GetSelectList(databaseGDR.Enable);
            ViewBag.DatabaseTypeId = new SelectList(await databaseTypeRepository.GetList(EnableEnum.Enabled), "Id", "Name", databaseGDR.DatabaseTypeId);
        }
Example #2
0
        public async Task <IActionResult> Create([Bind("Name,Description,DatabaseName,DatabaseServer,DatabaseUser,DatabasePassword,DatabaseTypeId,Port,ConnectionString")] DatabaseGDR databaseGDR, int[] ReportIdSelected)
        {
            if (ModelState.IsValid)
            {
                foreach (var reportId in ReportIdSelected)
                {
                    ReportDatabaseGDR reportDatabaseGDR = new ReportDatabaseGDR();
                    reportDatabaseGDR.ReportID = reportId;
                    databaseGDR.ReportDatabaseGDR.Add(reportDatabaseGDR);
                }

                databaseGDR.User       = User.Identity.Name;
                databaseGDR.ChangeDate = DateTime.Parse(DateTime.Now.ToString());

                if (await databaseGDRRepository.Create(databaseGDR))
                {
                    return(RedirectToAction(nameof(Index)));
                }
            }

            ViewBag.EnableSelect   = databaseGDRRepository.GetSelectList(databaseGDR.Enable);
            ViewBag.DatabaseTypeId = new SelectList(await databaseTypeRepository.GetList(EnableEnum.Enabled), "Id", "Name");

            return(View(databaseGDR));
        }
Example #3
0
        public async Task <IActionResult> Edit(int id, [Bind("Id,Name,Description,DatabaseName,DatabaseServer,DatabaseUser,DatabasePassword,DatabaseTypeId,Port,ConnectionString,Enable")] DatabaseGDR databaseGDR, int[] ReportIdSelected)
        {
            if (id != databaseGDR.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                databaseGDR.User       = User.Identity.Name;
                databaseGDR.ChangeDate = DateTime.Parse(DateTime.Now.ToString());

                var result = await databaseGDRRepository.Update(databaseGDR, ReportIdSelected);

                if (result == null)
                {
                    return(RedirectToAction(nameof(Index)));
                }

                return(RedirectToAction(nameof(Index)));
            }


            await SetSelectViewBag(databaseGDR);

            return(View(databaseGDR));
        }
Example #4
0
        private async Task <List <ReportResult> > GetDatabaseResult(DatabaseGDR databaseGDR, Report report, bool header, string filtro)
        {
            String  connectionString;
            dynamic connection;
            dynamic cmd;

            string databaseUser     = Cipher.Decrypt(databaseGDR.DatabaseUser, databaseGDR.ChangeDate.ToString());
            string databasePassword = Cipher.Decrypt(databaseGDR.DatabasePassword, databaseGDR.ChangeDate.ToString());


            switch (databaseGDR.DatabaseTypeId)
            {
            //MySQL/MariaDB
            case 1:
                connection       = new MySqlConnection();
                cmd              = new MySqlCommand();
                connectionString = $"server={databaseGDR.DatabaseServer};uid={databaseUser};Pwd={databasePassword};Database={databaseGDR.DatabaseName};Port={databaseGDR.Port}";
                return(await MultiDatabaseConnection(report.SQL, connection, cmd, connectionString, header, filtro));

            //Oracle
            case 2:
                connection       = new OracleConnection();
                cmd              = new OracleCommand();
                connectionString = $"User Id={databaseUser};Password={databasePassword};Data Source={databaseGDR.DatabaseServer}:{databaseGDR.Port}/{databaseGDR.DatabaseName}";
                return(await MultiDatabaseConnection(report.SQL, connection, cmd, connectionString, header, filtro));

            //PostgreSQL
            case 3:
                connection       = new NpgsqlConnection();
                cmd              = new NpgsqlCommand();
                connectionString = $"Host={databaseGDR.DatabaseServer};Username={databaseUser};Password={databasePassword};Database={databaseGDR.DatabaseName};Port={databaseGDR.Port}";
                return(await MultiDatabaseConnection(report.SQL, connection, cmd, connectionString, header, filtro));

            //SQL Server
            case 4:
                connection       = new SqlConnection();
                cmd              = new SqlCommand();
                connectionString = $"Server={databaseGDR.DatabaseServer},{databaseGDR.Port};User Id={databaseUser};Password={databasePassword};Initial Catalog={databaseGDR.DatabaseName}";
                return(await MultiDatabaseConnection(report.SQL, connection, cmd, connectionString, header, filtro));

            //Firebird
            case 5:
                connection       = new FbConnection();
                cmd              = new FbCommand();
                connectionString = $"User={databaseUser};Password={databasePassword};Database={databaseGDR.DatabaseName};DataSource={databaseGDR.DatabaseServer};Port={databaseGDR.Port}";
                return(await MultiDatabaseConnection(report.SQL, connection, cmd, connectionString, header, filtro));

            //OpenEdge
            //Este driver usa o campo descrição para complementar a string odbc
            case 6:
                connection       = new OdbcConnection();
                cmd              = new OdbcCommand();
                connectionString = databaseGDR.ConnectionString;
                connectionString = connectionString.Replace("Nome do servidor", databaseGDR.DatabaseServer);
                connectionString = connectionString.Replace("Porta", databaseGDR.Port.ToString());
                connectionString = connectionString.Replace("Nome do banco", databaseGDR.DatabaseName);
                connectionString = connectionString.Replace("Nome do usuário", databaseUser);
                connectionString = connectionString.Replace("Senha", databasePassword);

                return(await MultiDatabaseConnection(report.SQL, connection, cmd, connectionString, header, filtro));
            }

            return(null);
        }