Exemple #1
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> 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));
        }
Exemple #3
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);
        }
Exemple #4
0
        public async Task <int> RetornarIdConfiguracaoTabelaAsync()
        {
            var repositorio = new SqlClient.Repositorio(IdServidor);

            return(await repositorio.SelecionarIdConfiguracaoTabelaAsync(Database, Schema, Nome));
        }
Exemple #5
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);
        }