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));
        }
Example #2
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);
        }
Example #3
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);
        }