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)); }
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); }
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); }