/// <summary>
 /// Construtor classe InterpretadorTraceConfiguracao utilizando uma Transação e já preenche as propriedades com os dados da chave informada
 /// </summary>
 /// <param name="enmConfiguracaoChave">Código de Configuração</param>
 /// <param name="idUsuarioManutencao">ID do Usuário Logado</param>
 /// <param name="transacao">Transação Corrente</param>
 public ConfiguracaoChaveValor(ConfiguracaoChave cdConfiguracaoChave,
                               Int32 idUsuarioManutencao,
                               CaseBusiness.Framework.BancoDados.Transacao transacao)
     : this(idUsuarioManutencao, transacao)
 {
     Consultar(cdConfiguracaoChave);
 }
 /// <summary>
 /// Construtor classe InterpretadorTraceConfiguracao e já preenche as propriedades com os dados da chave informada
 /// </summary>
 /// <param name="enmConfiguracaoChave">Código de Configuração</param>
 /// <param name="idUsuarioManutencao">ID do Usuário Logado</param>
 public ConfiguracaoChaveValor(ConfiguracaoChave cdConfiguracaoChave,
                               Int32 idUsuarioManutencao)
 //String cdInterpretadorTraceConfiguracao,
     : this(idUsuarioManutencao)
 {
     Consultar(cdConfiguracaoChave);
 }
        /// <summary>
        /// Consultar o Valor de uma Chave de Configuração
        /// </summary>
        /// <param name="enmConfiguracaoChave">Código de Configuração</param>
        private void Consultar(ConfiguracaoChave cdConfiguracaoChave)
        {
            try
            {
                DataTable dt;

                String _kCacheKey = kCacheKey + ObterConfiguracaoChave_DBValue(cdConfiguracaoChave);

                if (MemoryCache.Default.Contains(_kCacheKey))
                {
                    dt = MemoryCache.Default[_kCacheKey] as DataTable;
                }
                else
                {
                    acessoDadosBase.AddParameter("@CFGCHVL_CD", ObterConfiguracaoChave_DBValue(cdConfiguracaoChave));

                    dt = acessoDadosBase.ExecuteDataSet(CommandType.StoredProcedure,
                                                        "prCFGCHVL_SEL_CONSULTAR").Tables[0];
                }
                // Fill Object
                __blnIsLoaded = false;

                if (dt.Rows.Count > 0)
                {
                    CodigoConfiguracaoChave    = Convert.ToString(dt.Rows[0]["CFGCHVL_CD"]);
                    DescricaoConfiguracaoChave = Convert.ToString(dt.Rows[0]["CFGCHVL_DS"]);
                    Valor = Convert.ToString(dt.Rows[0]["CFGCHVL_VL"]);

                    __blnIsLoaded = true;

                    MemoryCache.Default.Set(_kCacheKey, dt,
                                            new CacheItemPolicy()
                    {
                        SlidingExpiration = new TimeSpan(DateTime.Now.AddMinutes(kCache_SLIDINGEXPIRATION_MINUTES).Ticks - DateTime.Now.Ticks)
                    });
                }
            }
            catch (Exception ex)
            {
                CaseBusiness.Framework.Log.Log.Logar(CaseBusiness.Framework.TipoLog.Erro, ex.Message, ex.StackTrace, "", "", DateTime.Now, CaseBusiness.Framework.Configuracao.Configuracao.Aplicacao, CaseBusiness.Framework.Tela.Nenhum, 0);
                throw;
            }
        }
        /// <summary>
        /// Altera o Valor de uma Chave de Configuração
        /// </summary>
        /// <param name="enmConfiguracaoChave">Código de Configuração</param>
        /// <param name="valorConfiguracaoChave">Valor de uma Chave de Configuração</param>
        public void Alterar(ConfiguracaoChave cdConfiguracaoChave,
                            //String descricaoConfiguracaoChave,
                            String valorConfiguracaoChave)
        {
            try
            {
                acessoDadosBase.AddParameter("@CFGCHVL_CD", ObterConfiguracaoChave_DBValue(cdConfiguracaoChave));
                //acessoDadosBase.AddParameter("@CFGCHVL_DS", descricaoConfiguracaoChave);
                acessoDadosBase.AddParameter("@CFGCHVL_VL", valorConfiguracaoChave);
                acessoDadosBase.AddParameter("@USU_ID", UsuarioManutencao.ID);

                acessoDadosBase.ExecuteNonQuerySemRetorno(CommandType.StoredProcedure,
                                                          "prCFGCHVL_UPD");

                RemoveCache(ObterConfiguracaoChave_DBValue(cdConfiguracaoChave));
            }
            catch (Exception ex)
            {
                CaseBusiness.Framework.Log.Log.Logar(CaseBusiness.Framework.TipoLog.Erro, ex.Message, ex.StackTrace, "", "", DateTime.Now, CaseBusiness.Framework.Configuracao.Configuracao.Aplicacao, CaseBusiness.Framework.Tela.Nenhum, 0);
                throw;
            }
        }
        private String ObterConfiguracaoChave_DBValue(ConfiguracaoChave enmConfiguracaoChave)
        {
            String cdConfiguracaoChave_DBValue = "{EMPTY}";

            switch (enmConfiguracaoChave)
            {
            case ConfiguracaoChave.TRACE_EXPURGO:
                cdConfiguracaoChave_DBValue = kCODIGOCHAVE_DBVALUE_TRACE_EXPURGO;
                break;

            case ConfiguracaoChave.TRACE_GERACAO:
                cdConfiguracaoChave_DBValue = kCODIGOCHAVE_DBVALUE_TRACE_GERACAO;
                break;

            case ConfiguracaoChave.NOME_JAR:
                cdConfiguracaoChave_DBValue = kCODIGOCHAVE_DBVALUE_NOME_JAR;
                break;

            case ConfiguracaoChave.PASTA_JAR:
                cdConfiguracaoChave_DBValue = kCODIGOCHAVE_DBVALUE_PASTA_JAR;
                break;

            case ConfiguracaoChave.PASTA_JAVA:
                cdConfiguracaoChave_DBValue = kCODIGOCHAVE_DBVALUE_PASTA_JAVA;
                break;

            case ConfiguracaoChave.MENSAGERIA_EXPURGO:
                cdConfiguracaoChave_DBValue = kCODIGOCHAVE_DBVALUE_MENSAGERIA_EXPURGO;
                break;

            case ConfiguracaoChave.NOME_PY:
                cdConfiguracaoChave_DBValue = kCODIGOCHAVE_DBVALUE_NOME_PY;
                break;

            case ConfiguracaoChave.PASTA_PY:
                cdConfiguracaoChave_DBValue = kCODIGOCHAVE_DBVALUE_PASTA_PY;
                break;

            case ConfiguracaoChave.PASTA_PYTHON:
                cdConfiguracaoChave_DBValue = kCODIGOCHAVE_DBVALUE_PASTA_PYTHON;
                break;

            case ConfiguracaoChave.DIAS_CALC_CEP_PREVLC:
                cdConfiguracaoChave_DBValue = kCODIGOCHAVE_DBVALUE_DIAS_CALC_CEP_PREVLC;
                break;

            case ConfiguracaoChave.ATU_CALC_CEP_PREVLC:
                cdConfiguracaoChave_DBValue = kCODIGOCHAVE_DBVALUE_ATU_CALC_CEP_PREVLC;
                break;

            case ConfiguracaoChave.DIG_CALC_CEP_PREVLC:
                cdConfiguracaoChave_DBValue = kCODIGOCHAVE_DBVALUE_DIG_CALC_CEP_PREVLC;
                break;

            case ConfiguracaoChave.ARMZ_GEREN_SRV_INDEX:
                cdConfiguracaoChave_DBValue = kCODIGOCHAVE_DBVALUE_ARMZ_GEREN_SRV_INDEX;
                break;

            case ConfiguracaoChave.ARMZ_DADOS_INDEX:
                cdConfiguracaoChave_DBValue = kCODIGOCHAVE_DBVALUE_ARMZ_DADOS_INDEX;
                break;

            case ConfiguracaoChave.ENDERECO_SERV_INDEX:
                cdConfiguracaoChave_DBValue = kCODIGOCHAVE_DBVALUE_ENDERECO_SERV_INDEX;
                break;

            case ConfiguracaoChave.AUTENTICA_SERV_INDEX:
                cdConfiguracaoChave_DBValue = kCODIGOCHAVE_DBVALUE_AUTENTICA_SERV_INDEX;
                break;

            case ConfiguracaoChave.USUARIO_SERV_INDEX:
                cdConfiguracaoChave_DBValue = kCODIGOCHAVE_DBVALUE_USUARIO_SERV_INDEX;
                break;

            case ConfiguracaoChave.SENHA_SERV_INDEX:
                cdConfiguracaoChave_DBValue = kCODIGOCHAVE_DBVALUE_SENHA_SERV_INDEX;
                break;

            case ConfiguracaoChave.NOME_INDEX_GEREN_SRV:
                cdConfiguracaoChave_DBValue = kCODIGOCHAVE_DBVALUE_NOME_INDEX_GEREN_SRV;
                break;

            case ConfiguracaoChave.NOME_INDEX_DADOS:
                cdConfiguracaoChave_DBValue = kCODIGOCHAVE_DBVALUE_NOME_INDEX_DADOS;
                break;

            case ConfiguracaoChave.NOME_TYPE_DADOS:
                cdConfiguracaoChave_DBValue = kCODIGOCHAVE_DBVALUE_NOME_TYPE_DADOS;
                break;

            case ConfiguracaoChave.ENDERECO_MQ:
                cdConfiguracaoChave_DBValue = kCODIGOCHAVE_DBVALUE_ENDERECO_MQ;
                break;

            case ConfiguracaoChave.PORTA_MQ:
                cdConfiguracaoChave_DBValue = kCODIGOCHAVE_DBVALUE_PORTA_MQ;
                break;

            case ConfiguracaoChave.AUTENTICA_MQ:
                cdConfiguracaoChave_DBValue = kCODIGOCHAVE_DBVALUE_AUTENTICA_MQ;
                break;

            case ConfiguracaoChave.USUARIO_MQ:
                cdConfiguracaoChave_DBValue = kCODIGOCHAVE_DBVALUE_USUARIO_MQ;
                break;

            case ConfiguracaoChave.SENHA_MQ:
                cdConfiguracaoChave_DBValue = kCODIGOCHAVE_DBVALUE_SENHA_MQ;
                break;

            case ConfiguracaoChave.FILA_MQ:
                cdConfiguracaoChave_DBValue = kCODIGOCHAVE_DBVALUE_FILA_MQ;
                break;

            case ConfiguracaoChave.ATU_LB_DADOS_INMEMRY:
                cdConfiguracaoChave_DBValue = kCODIGOCHAVE_DBVALUE_ATU_LB_DADOS_INMEMRY;
                break;

            case ConfiguracaoChave.CICLO_ENVIO_SMS:
                cdConfiguracaoChave_DBValue = kCODIGOCHAVE_DBVALUE_CICLO_ENVIO_SMS;
                break;

            case ConfiguracaoChave.QTDE_ENVIO_SMS:
                cdConfiguracaoChave_DBValue = kCODIGOCHAVE_DBVALUE_QTDE_ENVIO_SMS;
                break;

            case ConfiguracaoChave.URL_REQ_ENVIO_SMS:
                cdConfiguracaoChave_DBValue = kCODIGOCHAVE_DBVALUE_URL_REQ_ENVIO_SMS;
                break;

            case ConfiguracaoChave.URL_PROC_ENVIO_SMS:
                cdConfiguracaoChave_DBValue = kCODIGOCHAVE_DBVALUE_URL_PROC_ENVIO_SMS;
                break;

            case ConfiguracaoChave.KAFKA_SERVERS:
                cdConfiguracaoChave_DBValue = kCODIGOCHAVE_DBVALUE_KAFKA_SERVERS;
                break;

            case ConfiguracaoChave.SMSRetCntctEvntTopic:
                cdConfiguracaoChave_DBValue = kCODIGOCHAVE_DBVALUE_SMSRetCntctEvntTopic;
                break;

            case ConfiguracaoChave.SMSSendDsptchrTopic:
                cdConfiguracaoChave_DBValue = kCODIGOCHAVE_DBVALUE_SMSSendDsptchrTopic;
                break;

            case ConfiguracaoChave.PROC_AGUAR_ENV_SMS:
                cdConfiguracaoChave_DBValue = kCODIGOCHAVE_DBVALUE_PROC_AGUAR_ENV_SMS;
                break;

            case ConfiguracaoChave.BASE_URL_TWW:
                cdConfiguracaoChave_DBValue = kCODIGOCHAVE_DBVALUE_BASE_URL_TWW;
                break;
            }

            return(cdConfiguracaoChave_DBValue);
        }