public void SalvarCampo(RelatorioCampo campo, BancoDeDados banco = null)
        {
            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco, _configSys.UsuarioRelatorio))
            {
                bancoDeDados.IniciarTransacao();

                Comando comando = bancoDeDados.CriarComando(@"select count(*) from tab_campo c where c.fato = (select t.id from TAB_FATO t where upper(t.tabela) = upper(:tabelafato)) 
					and c.dimensao = (select t.id from TAB_DIMENSAO t where upper(t.tabela) = upper(:tabeladimensao) )
					and upper(c.campo) = upper(:campoNome) "                    );

                comando.AdicionarParametroEntrada("tabelafato", DbType.String, 40, campo.TabelaFato);
                comando.AdicionarParametroEntrada("tabeladimensao", DbType.String, 40, campo.TabelaDimensao);
                comando.AdicionarParametroEntrada("campoNome", DbType.String, 30, campo.Nome);

                if (bancoDeDados.ExecutarScalar <Decimal>(comando) == 0)
                {
                    CriarCampo(campo, bancoDeDados);
                }
                else
                {
                    EditarCampo(campo, bancoDeDados);
                }

                bancoDeDados.Commit();
            }
        }
        public void CriarCampo(RelatorioCampo campo, BancoDeDados banco = null)
        {
            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco, _configSys.UsuarioRelatorio))
            {
                bancoDeDados.IniciarTransacao();

                Comando comando = bancoDeDados.CriarComando(@"insert into tab_campo(id, codigo, fato, dimensao, alias, campo, tipo_dado, campo_exibicao, campo_filtro, consulta, campo_consulta, sistema_consulta, campo_ordenacao) 
				values (seq_campo.nextval, null, (select t.id from TAB_FATO t where upper(t.tabela) = upper(:tabelafato)), 
				(select t.id from TAB_DIMENSAO t where upper(t.tabela) = upper(:tabeladimensao)), 
				:alias, :campoNome, :tipo_dado, :campo_exibicao, :campo_filtro, :consulta, :campo_consulta, :sistema_consulta, :campo_ordenacao)"                );

                comando.AdicionarParametroEntrada("tabelafato", DbType.String, 40, campo.TabelaFato);
                comando.AdicionarParametroEntrada("tabeladimensao", DbType.String, 40, campo.TabelaDimensao);
                comando.AdicionarParametroEntrada("alias", DbType.String, 4000, campo.Alias);
                comando.AdicionarParametroEntrada("campoNome", DbType.String, 30, campo.Nome);
                comando.AdicionarParametroEntrada("tipo_dado", (int)campo.TipoDado, DbType.Int32);
                comando.AdicionarParametroEntrada("campo_exibicao", campo.Exibicao ? 1 : 0, DbType.Int32);
                comando.AdicionarParametroEntrada("campo_filtro", campo.Filtro ? 1 : 0, DbType.Int32);
                comando.AdicionarParametroEntrada("consulta", DbType.String, 4000, campo.ConsultaSql);
                comando.AdicionarParametroEntrada("campo_consulta", DbType.String, 40, campo.ConsultaCampo);
                comando.AdicionarParametroEntrada("sistema_consulta", (int)campo.ConsultaSistema, DbType.Int32);
                comando.AdicionarParametroEntrada("campo_ordenacao", campo.Ordenacao ? 1 : 0, DbType.Int32);

                bancoDeDados.ExecutarNonQuery(comando);

                bancoDeDados.Commit();
            }
        }
        public void EditarCampo(RelatorioCampo campo, BancoDeDados banco = null)
        {
            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco, _configSys.UsuarioRelatorio))
            {
                bancoDeDados.IniciarTransacao();

                Comando comando = bancoDeDados.CriarComando(@"update tab_campo c set c.alias = :alias 
					where c.fato = (select t.id from TAB_FATO t where upper(t.tabela) = upper(:tabelafato)) 
					and c.dimensao = (select t.id from TAB_DIMENSAO t where upper(t.tabela) = upper(:tabeladimensao) )
					and upper(c.campo) = upper(:campoNome) "                    );

                comando.AdicionarParametroEntrada("tabelafato", DbType.String, 40, campo.TabelaFato);
                comando.AdicionarParametroEntrada("tabeladimensao", DbType.String, 40, campo.TabelaDimensao);
                comando.AdicionarParametroEntrada("campoNome", DbType.String, 30, campo.Nome);

                comando.AdicionarParametroEntrada("alias", DbType.String, 4000, campo.Alias);

                bancoDeDados.ExecutarNonQuery(comando);

                bancoDeDados.Commit();
            }
        }
Beispiel #4
0
        private void GerarColunasDinamicas()
        {
            #region Colunas Perguntas
            List <Dictionary <string, object> > colunasIds = _da.ObterPerguntaIds();

            if (colunasIds != null && colunasIds.Count > 0)
            {
                SqlBuilderDa sqlBuilder = new SqlBuilderDa("dim_fisc_pergunta", "seq_dim_fisc_pergunta");
                var          lstColunas = sqlBuilder.ObterColunas();

                colunasIds.Where(x => lstColunas.Exists(c => c.ColumnName == string.Format("P_TXT_{0}", x["PERGUNTA_ID"]))).ToList()
                .ForEach(x =>
                {
                    RelatorioCampo campoRelatorio = new RelatorioCampo();
                    campoRelatorio.TabelaFato     = "fat_fiscalizacao";
                    campoRelatorio.TabelaDimensao = "dim_fisc_pergunta";
                    campoRelatorio.Alias          = x["PERGUNTA_TEXTO"].ToString();
                    campoRelatorio.Nome           = string.Format("P_RES_TXT_{0}", x["PERGUNTA_ID"]);
                    campoRelatorio.TipoDado       = eCampoTipoDado.String;

                    _daRelatorio.SalvarCampo(campoRelatorio);
                });

                colunasIds.Where(x => !lstColunas.Exists(c => c.ColumnName == string.Format("P_TXT_{0}", x["PERGUNTA_ID"]))).ToList()
                .ForEach(x =>
                {
                    sqlBuilder.AddColuna("dim_fisc_pergunta", string.Format("P_TXT_{0}", x["PERGUNTA_ID"]), "VARCHAR2(100)");
                    sqlBuilder.AddColuna("dim_fisc_pergunta", string.Format("P_TID_{0}", x["PERGUNTA_ID"]), "VARCHAR2(36)");
                    sqlBuilder.AddColuna("dim_fisc_pergunta", string.Format("P_RES_ID_{0}", x["PERGUNTA_ID"]), "NUMBER(38)");
                    sqlBuilder.AddColuna("dim_fisc_pergunta", string.Format("P_RES_TXT_{0}", x["PERGUNTA_ID"]), "VARCHAR2(100)");
                    sqlBuilder.AddColuna("dim_fisc_pergunta", string.Format("P_RES_TID_{0}", x["PERGUNTA_ID"]), "VARCHAR2(36)");

                    sqlBuilder.AddIndiceTxt("dim_fisc_pergunta", string.Format("P_TXT_{0}", x["PERGUNTA_ID"]), string.Format("idx_fisc_p{0}", x["PERGUNTA_ID"]));
                    sqlBuilder.AddIndiceTxt("dim_fisc_pergunta", string.Format("P_RES_TXT_{0}", x["PERGUNTA_ID"]), string.Format("idx_fisc_pr{0}", x["PERGUNTA_ID"]));

                    RelatorioCampo campoRelatorio = new RelatorioCampo();
                    campoRelatorio.TabelaFato     = "fat_fiscalizacao";
                    campoRelatorio.TabelaDimensao = "dim_fisc_pergunta";
                    campoRelatorio.Alias          = x["PERGUNTA_TEXTO"].ToString();
                    campoRelatorio.Nome           = string.Format("P_RES_TXT_{0}", x["PERGUNTA_ID"]);
                    campoRelatorio.TipoDado       = eCampoTipoDado.String;

                    campoRelatorio.Exibicao  = true;
                    campoRelatorio.Filtro    = true;
                    campoRelatorio.Ordenacao = true;

                    campoRelatorio.ConsultaSistema = eSistemaConsulta.Relatorio;
                    campoRelatorio.ConsultaSql     = string.Format(" ( select distinct p.p_res_id_{0} id, p.P_RES_TXT_{0} texto from dim_fisc_pergunta p where p.P_RES_TXT_{0} is not null ) ", x["PERGUNTA_ID"]);
                    campoRelatorio.ConsultaCampo   = string.Format("P_RES_ID_{0}", x["PERGUNTA_ID"]);

                    _daRelatorio.SalvarCampo(campoRelatorio);
                });
            }
            #endregion

            #region Colunas Campos
            colunasIds = _da.ObterFiscCamposIds();

            if (colunasIds != null && colunasIds.Count > 0)
            {
                SqlBuilderDa sqlBuilder = new SqlBuilderDa("dim_fisc_campo", "seq_dim_fisc_campo");
                var          lstColunas = sqlBuilder.ObterColunas();

                colunasIds.Where(x => lstColunas.Exists(c => c.ColumnName == string.Format("C_VAL_{0}", x["INFRACAO_CAMPO_ID"]))).ToList()
                .ForEach(x =>
                {
                    RelatorioCampo campoRelatorio = new RelatorioCampo();
                    campoRelatorio.TabelaFato     = "fat_fiscalizacao";
                    campoRelatorio.TabelaDimensao = "dim_fisc_campo";
                    campoRelatorio.Alias          = string.Format("{0}{1}", x["TEXTO"], (String.IsNullOrEmpty(x["UNIDADE_TEXTO"].ToString()) ? String.Empty : " (" + x["UNIDADE_TEXTO"] + ")"));
                    campoRelatorio.Nome           = string.Format("C_VAL_{0}", x["INFRACAO_CAMPO_ID"]);
                    campoRelatorio.TipoDado       = ((Convert.ToInt32(x["TIPO"]) == 1) ? eCampoTipoDado.String : eCampoTipoDado.Real);

                    _daRelatorio.SalvarCampo(campoRelatorio);
                });

                colunasIds.Where(x => !lstColunas.Exists(c => c.ColumnName == string.Format("C_VAL_{0}", x["INFRACAO_CAMPO_ID"]))).ToList()
                .ForEach(x =>
                {
                    sqlBuilder.AddColuna("dim_fisc_campo", string.Format("C_VAL_{0}", x["INFRACAO_CAMPO_ID"]), ((Convert.ToInt32(x["TIPO"]) == 1) ? "VARCHAR2(100)" : "NUMBER"));

                    if (Convert.ToInt32(x["TIPO"]) == 1)
                    {
                        sqlBuilder.AddIndiceTxt("dim_fisc_campo", string.Format("C_VAL_{0}", x["INFRACAO_CAMPO_ID"]), string.Format("idx_fisc_c{0}", x["INFRACAO_CAMPO_ID"]));
                    }

                    RelatorioCampo campoRelatorio = new RelatorioCampo();
                    campoRelatorio.TabelaFato     = "fat_fiscalizacao";
                    campoRelatorio.TabelaDimensao = "dim_fisc_campo";
                    campoRelatorio.Alias          = string.Format("{0}{1}", x["TEXTO"], (String.IsNullOrEmpty(x["UNIDADE_TEXTO"].ToString()) ? String.Empty : " (" + x["UNIDADE_TEXTO"] + ")"));
                    campoRelatorio.Nome           = string.Format("C_VAL_{0}", x["INFRACAO_CAMPO_ID"]);
                    campoRelatorio.TipoDado       = ((Convert.ToInt32(x["TIPO"]) == 1) ? eCampoTipoDado.String : eCampoTipoDado.Real);

                    campoRelatorio.Exibicao  = true;
                    campoRelatorio.Filtro    = true;
                    campoRelatorio.Ordenacao = true;

                    _daRelatorio.SalvarCampo(campoRelatorio);
                });
            }
            #endregion
        }