示例#1
0
        public async Task <string> InserirRegistroAsync(Dictionary <string, string> valores, int idUsuario)
        {
            string retorno = string.Empty;

            try
            {
                SqlClient.Repositorio repositorio       = new SqlClient.Repositorio(IdServidor);
                AlteracaoRegistroCore alteracaoRegistro = new AlteracaoRegistroCore(Colunas, valores, false);

                var valoresTratados = alteracaoRegistro.GetValoresTratados();

                var query = await RetornarInsertAsync(valoresTratados);

                var usuario  = await new SQLiteCore().RetornarNomeUsuario(idUsuario);
                var dadosLog = new DadosLog()
                {
                    Database = this.Database,
                    Schema   = this.Schema,
                    Tabela   = Nome,
                    Metodo   = "InserirRegistroAsync",
                    Query    = query,
                    Usuario  = usuario
                };

                retorno = await repositorio.AlterarIncluirValoresAsync(query, dadosLog);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(retorno);
        }
        public async Task <JsonResult> GravarConfiguracoesTabela(string dados, string dadosfk, string dadosfiltro)
        {
            try
            {
                var idServidor = HttpContext.Session.GetInt32("idServidor").Value;
                Repo.Repositorio repositorio = new Repo.Repositorio(idServidor);
                if (!string.IsNullOrEmpty(dados))
                {
                    var dadosBanco = dados.Split("|")[0];
                    var colunas    = dados.Split("|")[1];
                    var database   = dadosBanco.Split(";")[0];
                    var schema     = dadosBanco.Split(";")[1];
                    var tabela     = dadosBanco.Split(";")[2];

                    await _tabelaCore.CarregarAsync(tabela, schema, database, idServidor);

                    await _tabelaCore.SalvarConfiguracoesColunasAsync(colunas.Split(";").ToList(), dadosfk?.Split(";").ToList(), dadosfiltro?.Split(";").ToList());
                }
                else
                {
                    return(Json(new { result = false, message = "Dados vazios!" }));
                }
            }
            catch (Exception ex)
            {
                return(Json(new { result = false, message = ex.Message }));
            }

            return(Json(new { result = true, message = string.Empty }));
        }
示例#3
0
        public async Task <string[]> DeletarRegistroAsync(int idServidor, string pk, int idUsuario)
        {
            var repositorio = new SqlClient.Repositorio(idServidor);

            string[] retorno = { string.Empty, string.Empty, string.Empty };
            var      query   = RetornarDelete(pk);

            try
            {
                var usuario  = await new SQLiteCore().RetornarNomeUsuario(idUsuario);
                var dadosLog = new DadosLog()
                {
                    Database = this.Database,
                    Schema   = this.Schema,
                    Tabela   = Nome,
                    Metodo   = "DeletarRegistroAsync",
                    Query    = query,
                    Usuario  = usuario
                };
                retorno = await repositorio.DeletarRegistroAsync(query, dadosLog);
            }
            catch (Exception ex)
            {
                retorno[0] = "Erro ao deletar o registro.";
                retorno[1] = ex.Message;
                retorno[2] = query;
            }
            return(retorno);
        }
示例#4
0
        public async Task CarregarValoresAsync(bool amostra = false, string pk = "")
        {
            var repositorio = new SqlClient.Repositorio(IdServidor);
            var query       = string.Empty;

            var where = string.Empty;

            try
            {
                where = MontarWhereChavesPrimarias(pk);
                query = await RetornarSelectAsync(where, amostra, true);

                if (amostra)
                {
                    ValoresMultilinha = await repositorio.RetornarValoresQueryAsync(query);

                    ConsultaDados = await repositorio.RetornarValoresMultilinha(query);
                }
                else
                {
                    Valores = await repositorio.RetornarValoresAsync(query);

                    pkAlteracao = pk;
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
示例#5
0
        public async Task CarregarColunasFiltro()
        {
            var repositorio   = new SqlClient.Repositorio(IdServidor);
            var colunasFiltro = await repositorio.SelecionarColunasFiltroAsync(Database, Schema, Nome);

            colunasFiltro.ForEach(col => col = col.ToUpper());
            ColunasFiltro = TodasColunas.Where(p => colunasFiltro.Contains(p.Nome.ToUpper())).ToList();
        }
        public async Task <JsonResult> SelecionarColunasChaveEstrangeira(string database, string schema, string tabela)
        {
            var idServidor = HttpContext.Session.GetInt32("idServidor").Value;

            Repo.Repositorio repositorio = new Repo.Repositorio(idServidor);
            var consulta = (await repositorio.RetornarColunasAsync(database, schema, tabela)).Where(p => p.IsChaveEstrangeira).ToList();
            List <ColunaChaveEstrangeiraViewModel> colunas = new List <ColunaChaveEstrangeiraViewModel>();

            await _tabelaCore.CarregarAsync(tabela, schema, database, idServidor);

            var id = await repositorio.SelecionarIdConfiguracaoTabelaAsync(database, schema, tabela);

            string colDescricao = string.Empty;

            List <string> colsList = null;

            if (id > 0)
            {
                colsList = await repositorio.SelecionarColunasChaveEstrangeiraAsync(id);
            }

            if (consulta.Count > 0)
            {
                for (int contador = 0; contador < consulta.Count; contador++)
                {
                    var tabelaReferenciadaChavePrimaria = _tabelaCore.TodasColunas.Where(c => c.Nome == consulta[contador].Nome).FirstOrDefault()?.TabelaReferenciadaChavePrimaria;
                    var colunasTabelaReferenciada       = (await repositorio.RetornarColunasAsync(database, schema, tabelaReferenciadaChavePrimaria)).Select(p => p.Nome).ToList();
                    if (colsList != null)
                    {
                        if (colsList.Where(p => p.Split(":")[0].Equals(consulta[contador].Nome)).FirstOrDefault() != null)
                        {
                            colDescricao = colsList.Where(p => p.Split(":")[0].Equals(consulta[contador].Nome)).FirstOrDefault().Split(":")[1];
                        }
                        else
                        {
                            colDescricao = consulta[contador].Nome;
                        }
                    }
                    colunas.Add(new ColunaChaveEstrangeiraViewModel()
                    {
                        Nome = consulta[contador].Nome,
                        TabelaReferenciada          = consulta[contador].TabelaReferenciada,
                        ColunaReferenciada          = consulta[contador].ColunaReferenciada,
                        ColunasTabelaReferenciada   = colunasTabelaReferenciada,
                        IndiceColTabelaReferenciada = colunasTabelaReferenciada.IndexOf(colDescricao) == -1 ? 0 : colunasTabelaReferenciada.IndexOf(colDescricao)
                    });
                }
            }

            return(Json(colunas));
        }
示例#7
0
        public async Task <List <string> > RetornarColunasFiltroAsync()
        {
            var           repositorio   = new SqlClient.Repositorio(IdServidor);
            List <string> colFiltroList = new List <string>();
            var           id            = await repositorio.SelecionarIdConfiguracaoTabelaAsync(Database, Schema, Nome);

            if (id > 0)
            {
                colFiltroList = await repositorio.SelecionarColunasFiltroAsync(id);
            }


            return(colFiltroList);
        }
示例#8
0
        public async Task CarregarValoresAsync(string query)
        {
            var repositorio = new SqlClient.Repositorio(IdServidor);

            var where = string.Empty;

            try
            {
                ValoresMultilinha = await repositorio.RetornarValoresQueryAsync(query);

                ConsultaDados = await repositorio.RetornarValoresMultilinha(query);
            }
            catch (Exception)
            {
                throw;
            }
        }
示例#9
0
        public async Task <IActionResult> ConsultarDadosIndex(string database, string schema, string tabela)
        {
            var idServidor  = HttpContext.Session.GetInt32("idServidor").Value;
            var repositorio = new Repo.Repositorio(idServidor);

            try
            {
                ViewBag.Title = tabela;
                await _tabelaCore.CarregarAsync(tabela, schema, database, idServidor);

                await _tabelaCore.CarregarValoresAsync(true);
            }
            catch (Exception)
            {
                throw;
            }
            return(Json(_tabelaCore));
        }
示例#10
0
        public async Task <IActionResult> Novo(string database, string schema, string tabela)
        {
            var idServidor  = HttpContext.Session.GetInt32("idServidor").Value;
            var repositorio = new Repo.Repositorio(idServidor);

            try
            {
                await _tabelaCore.CarregarAsync(tabela, schema, database, idServidor);

                ViewBag.Alterar = false;

                ViewBag.UrlBack = $"/CadDinamico/Index?database={database}&schema={schema}&tabela={tabela}";
            }
            catch (Exception)
            {
                throw;
            }
            return(View("TelaDinamicaInclusao", _tabelaCore));
        }
示例#11
0
        public async Task SalvarConfiguracoesColunasAsync(List <string> colunasVisiveis, List <string> colunasChave, List <string> colunasFiltro)
        {
            try
            {
                var repositorio          = new SqlClient.Repositorio(IdServidor);
                var idConfiguracaoTabela = await repositorio.SelecionarIdConfiguracaoTabelaAsync(Database, Schema, Nome);

                var idConfiguracaoTabelaColuna = 0;

                await repositorio.SalvarConfiguracoesTabelaAsync(idConfiguracaoTabela, Database, Schema, Nome);

                idConfiguracaoTabela = await repositorio.SelecionarIdConfiguracaoTabelaAsync(Database, Schema, Nome);

                foreach (var coluna in TodasColunas)
                {
                    var visivel = colunasVisiveis.Contains(coluna.Nome);
                    var filtro  = colunasFiltro?.Contains(coluna.Nome) ?? false;
                    var chave   = string.Empty;
                    if (colunasChave != null)
                    {
                        foreach (var item in colunasChave)
                        {
                            if (chave == string.Empty)
                            {
                                if (item.Split(":")[0] == coluna.Nome)
                                {
                                    chave = item.Split(":")[1];
                                }
                            }
                        }
                    }
                    idConfiguracaoTabelaColuna = await repositorio.SelecionarIdConfiguracaoTabelaColunaAsync(Database, Schema, Nome, coluna.Nome);

                    await repositorio.SalvarConfiguracaoColunaAsync(idConfiguracaoTabelaColuna, idConfiguracaoTabela, coluna.Nome, visivel, chave, filtro);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public async Task <JsonResult> SelecionarTabelas(string database, string schema)
        {
            var idServidor = HttpContext.Session.GetInt32("idServidor").Value;

            Repo.Repositorio repositorio = new Repo.Repositorio(idServidor);
            var consulta = await repositorio.RetornarTabelasAsync(database, schema);

            List <SchemaViewModel> schemas = new List <SchemaViewModel>();

            if (consulta.Count > 0)
            {
                for (int contador = 0; contador < consulta.Count; contador++)
                {
                    schemas.Add(new SchemaViewModel()
                    {
                        Name = consulta[contador].Nome
                    });
                }
            }
            return(new JsonResult(schemas));
        }
        public async Task <JsonResult> SelecionarDatabases()
        {
            var idServidor = HttpContext.Session.GetInt32("idServidor").Value;

            Repo.Repositorio repositorio = new Repo.Repositorio(idServidor);
            var consulta = await repositorio.RetornarDatabasesAsync();

            List <DatabaseViewModel> databases = new List <DatabaseViewModel>();

            if (consulta.Count > 0)
            {
                for (int contador = 0; contador < consulta.Count; contador++)
                {
                    databases.Add(new DatabaseViewModel()
                    {
                        Name = consulta[contador].Nome
                    });
                }
            }

            return(new JsonResult(databases));
        }
示例#14
0
        public async Task <string> PesquisarRegistrosAsync(Dictionary <string, string> valores)
        {
            string retorno = string.Empty;

            try
            {
                SqlClient.Repositorio repositorio       = new SqlClient.Repositorio(IdServidor);
                AlteracaoRegistroCore alteracaoRegistro = new AlteracaoRegistroCore(TodasColunas, valores, true);

                var valoresTratados = alteracaoRegistro.GetValoresTratados();

                var where = MontarWhere(valoresTratados);
                var query = await RetornarSelectAsync(where, false, false);

                await CarregarValoresAsync(query);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(retorno);
        }
示例#15
0
        private async Task <List <TabelaEstrangeira> > RetornarListaTabelaEstrangeira(string tabela)
        {
            List <TabelaEstrangeira> itens = null;
            var    repositorio             = new SqlClient.Repositorio(IdServidor);
            string chavePrimaria           = "";
            string descricao = "";

            try
            {
                chavePrimaria = (await repositorio.RetornarColunasChavePrimariaTabelaAsync(tabela, Schema, Database))[0].Nome;
                descricao     = await repositorio.SelecionarDescricaoChaveEstrangeiraConfiguracaoTabelaAsync(Database, Schema, Nome, chavePrimaria);

                if (string.IsNullOrEmpty(descricao))
                {
                    descricao = (await repositorio.RetornarColunasAsync(Database, Schema, tabela)).FirstOrDefault().Nome;
                }
                itens = await repositorio.SelectTabelaAsync(chavePrimaria, descricao, tabela, Schema, Database);
            }
            catch (Exception)
            {
                throw;
            }
            return(itens);
        }
示例#16
0
        public async Task <string> CarregarAsync(string tabela, string schema, string database, int idServidor, bool carregarFks = true)
        {
            Nome       = tabela;
            Schema     = schema;
            Database   = database;
            IdServidor = idServidor;
            Valores    = new List <object>();

            string retorno = string.Empty;

            SqlClient.Repositorio repositorio = new SqlClient.Repositorio(IdServidor);

            if (string.IsNullOrEmpty(Database))
            {
                throw new ArgumentException("Propriedade Database é obrigatória.");
            }

            if (string.IsNullOrEmpty(Nome))
            {
                throw new ArgumentException("Propriedade Nome da tabela é obrigatória.");
            }

            if (string.IsNullOrEmpty(Schema))
            {
                Schema = "DBO";
            }

            try
            {
                Valores           = null;
                ValoresMultilinha = null;
                ConsultaDados     = null;
                pkAlteracao       = string.Empty;

                Colunas = await repositorio.RetornarColunasAsync(Database, Schema, Nome);

                TodasColunas = new List <Coluna>();
                TodasColunas.AddRange(Colunas);
                CarregarNomesInput();
                TemChavePrimaria    = Colunas.Where(p => p.IsChavePrimaria).FirstOrDefault() != null;
                TemChaveEstrangeira = Colunas.Where(p => p.IsChaveEstrangeira).FirstOrDefault() != null;
                camposExibir        = await repositorio.SelecionarColunasVisiveisAsync(Database, Schema, Nome);

                ChavesPrimarias = await repositorio.RetornarColunasChavePrimariaTabelaAsync(Nome, Schema, Database);

                RemoverColunasIgnoradas();
                QuantidadeCampos = Colunas.Count;
                if (carregarFks)
                {
                    await CarregarColunasChaveEstrangeiraAsync();
                }
                IsIdentity = Colunas.FirstOrDefault().IsIdentity;
                await CarregarColunasFiltro();
            }
            catch (Exception ex)
            {
                retorno = ex.Message;
            }

            return(retorno);
        }
示例#17
0
        public async Task <string> RetornarSelectAsync(string where, bool amostra, bool limitarUm)
        {
            var          repositorio = new SqlClient.Repositorio(IdServidor);
            string       query       = string.Empty;
            int          countTabelasEstrangeiras = 0;
            const string prefixoAlias             = "AL";

            var id = await repositorio.SelecionarIdConfiguracaoTabelaAsync(Database, Schema, Nome);

            string colDescricao = string.Empty;

            List <string> colsList = null;

            /* Dá TOP(10) quando não tiver where definido */
            if (!limitarUm && where == string.Empty)
            {
                amostra = true;
            }

            if (id > 0)
            {
                colsList = await repositorio.SelecionarColunasChaveEstrangeiraAsync(id);
            }
            query = "SELECT " + (amostra ? "TOP(10) " : (limitarUm ? "TOP(1) " : ""));
            /* Montar Select da PK */
            if (Colunas.Where(p => p.IsChavePrimaria).Count() > 0)
            {
                for (int i = 0; i < Colunas.Count; i++)
                {
                    if (Colunas[i].IsChavePrimaria)
                    {
                        query += $"'{Colunas[i].Nome}:' + CAST(AL0.{Colunas[i].Nome} AS VARCHAR) + ';' +";
                    }
                }
                query = query.Remove(query.Length - 8, 8);

                query += " AS PK, ";
            }
            else
            {
                query += "'' AS PK, ";
            }

            for (int i = 0; i < Colunas.Count; i++)
            {
                if (Colunas[i].IsChaveEstrangeira)
                {
                    countTabelasEstrangeiras++;
                    if (colsList != null)
                    {
                        if (colsList.Where(p => p.Split(":")[0].Equals(Colunas[i].Nome)).FirstOrDefault() != null)
                        {
                            colDescricao = colsList.Where(p => p.Split(":")[0].Equals(Colunas[i].Nome)).FirstOrDefault().Split(":")[1];
                        }
                        else
                        {
                            colDescricao = Colunas[i].Nome;
                        }
                    }

                    query += $"{prefixoAlias + countTabelasEstrangeiras.ToString()}.{colDescricao}, ";
                }
                else
                {
                    query += prefixoAlias + "0." + Colunas[i].Nome + ", ";
                }
            }
            query  = query.Remove(query.Length - 2, 2);
            query += string.Format(" FROM {0}.{1}.{2} {3} WITH(NOLOCK)", Database, Schema, Nome, prefixoAlias + "0");
            if (countTabelasEstrangeiras > 0)
            {
                countTabelasEstrangeiras = 0;
                for (int i = 0; i < Colunas.Count; i++)
                {
                    if (Colunas[i].IsChaveEstrangeira)
                    {
                        countTabelasEstrangeiras++;
                        query += $" LEFT JOIN {Database}.{Schema}.{Colunas[i].TabelaReferenciadaChavePrimaria} {prefixoAlias + countTabelasEstrangeiras.ToString()} ";
                        query += $"     WITH(NOLOCK) ON {prefixoAlias + countTabelasEstrangeiras.ToString()}.{Colunas[i].ColunaReferenciadaChavePrimaria} = {prefixoAlias + "0"}.{Colunas[i].Nome}";
                    }
                }
            }

            if (!string.IsNullOrWhiteSpace(where))
            {
                query += " WHERE " + where;
            }

            return(query);
        }
示例#18
0
        public async Task <string> RetornarInsertAsync(Dictionary <string, object> valores)
        {
            string query       = string.Empty;
            var    repositorio = new SqlClient.Repositorio(IdServidor);

            /* Monta cabeçalho */
            query = string.Format("INSERT INTO {0}.{1}.{2} ( ", Database, Schema, Nome);
            for (int cont = 0; cont < Colunas.Count; cont++)
            {
                if (!Colunas[cont].IsChavePrimaria)
                {
                    query += Colunas[cont].Nome + ", ";
                }
                else if (Colunas[cont].IsChaveEstrangeira)
                {
                    query += Colunas[cont].Nome + ", ";
                }
                else if (!IsIdentity)
                {
                    query += Colunas[cont].Nome + ", ";
                }
            }
            query  = query.Substring(0, query.Length - 2);
            query += " ) VALUES ( ";

            /* Monta valores */
            for (int cont = 0; cont < Colunas.Count; cont++)
            {
                if (!Colunas[cont].IsChavePrimaria)
                {
                    string valorParametro = valores[Colunas[cont].Nome].ToString();

                    if (valorParametro.ToUpper() != "NULL")
                    {
                        if (Colunas[cont].Tipo.ToUpper() == "DATE" ||
                            Colunas[cont].Tipo.ToUpper() == "DATETIME" ||
                            Colunas[cont].Tipo.ToUpper() == "DATETIME2")
                        {
                            valorParametro = AjustarFormatoData(valorParametro);
                        }

                        if (Colunas[cont].Tipo.ToUpper() == "VARCHAR" ||
                            Colunas[cont].Tipo.ToUpper() == "CHAR" ||
                            Colunas[cont].Tipo.ToUpper() == "NVARCHAR" ||
                            Colunas[cont].Tipo.ToUpper() == "NCHAR" ||
                            Colunas[cont].Tipo.ToUpper() == "DATE" ||
                            Colunas[cont].Tipo.ToUpper() == "DATETIME" ||
                            Colunas[cont].Tipo.ToUpper() == "TIME" ||
                            Colunas[cont].Tipo.ToUpper() == "TIMESPAN" ||
                            Colunas[cont].Tipo.ToUpper() == "DATETIME2")
                        {
                            valorParametro = "'" + valorParametro + "'";
                        }
                        else if (Colunas[cont].Tipo.ToUpper() == "BIT")
                        {
                            if (valorParametro.ToUpper() == bool.TrueString.ToUpper() || valorParametro.ToUpper() == "ON")
                            {
                                valorParametro = "1";
                            }
                            else
                            {
                                valorParametro = "0";
                            }
                        }
                    }
                    query += valorParametro + ", ";
                }
                else // Tratar chave primária
                {
                    if (Colunas[cont].IsChaveEstrangeira)
                    {
                        string valorParametro = valores[Colunas[cont].Nome].ToString();

                        query += valorParametro + ", ";
                    }
                    else if (!IsIdentity)
                    {
                        string valorParametro = (await repositorio.RetornarProximaChavePrimaria(Database, Schema, Nome,
                                                                                                Colunas[cont].Nome)).ToString();

                        query += valorParametro + ", ";
                    }
                }
            }
            query  = query.Substring(0, query.Length - 2);
            query += " )";

            return(query);
        }
示例#19
0
        public async Task <int> RetornarIdConfiguracaoTabelaAsync()
        {
            var repositorio = new SqlClient.Repositorio(IdServidor);

            return(await repositorio.SelecionarIdConfiguracaoTabelaAsync(Database, Schema, Nome));
        }