/// <summary>
        /// Buscar Permissões de Usuários
        /// </summary>
        /// <param name="idUsuario">ID do Usuário</param>
        /// <param name="idSistema">ID do Sistema</param>
        /// <param name="idSistemaFuncionalidade">ID da Funcionalidade do Sistema</param>
        /// <param name="codigoSistemaFuncionalidadeAcao">Código da Ação na Funcionalidade do Sistema</param>
        /// <param name="enmStatusUsuario">Status do Usuário</param>
        public DataTable Buscar(Int32 idUsuario,
                                Int32 idSistema,
                                Int32 idSistemaFuncionalidade,
                                String codigoSistemaFuncionalidadeAcao,
                                CaseBusiness.CtrlAcesso.UsuarioStatus.enumStatus enmStatusUsuario)
        {
            DataTable dt             = null;
            String    _statusUsuario = String.Empty;

            try
            {
                //        if (ModoEntidadeOnly) { throw new ApplicationException("Esta Instância da classe UsuarioSistemaFuncionalidadeAcao está operando em Modo Entidade Only"); }

                _statusUsuario = UsuarioStatus.ObterDBValue(enmStatusUsuario);
                //switch (enmStatusUsuario)
                //{
                //    case UsuarioStatusLog.enumStatus.EMPTY: _statusUsuario = String.Empty; break;
                //    case UsuarioStatusLog.enumStatus.ATIVO: _statusUsuario = CaseBusiness.CtrlAcesso.UsuarioStatusLog.kStatus_ATIVO_DBValue; break;
                //    case UsuarioStatusLog.enumStatus.INATIVO: _statusUsuario = CaseBusiness.CtrlAcesso.UsuarioStatusLog.kStatus_INATIVO_DBValue; break;
                //}

                acessoDadosBase.AddParameter("@USU_ID", idUsuario);
                acessoDadosBase.AddParameter("@SIST_ID", idSistema);
                acessoDadosBase.AddParameter("@SISTFCN_ID", idSistemaFuncionalidade);
                acessoDadosBase.AddParameter("@SISTFCNACAO_CD", codigoSistemaFuncionalidadeAcao.Trim().ToUpper());
                acessoDadosBase.AddParameter("@USU_ST", _statusUsuario);

                // Habilita Usuarios ID Negativos 2RP.Net se o Logado for um deles
                if (this.UsuarioManutencao.ID < 0)
                {
                    acessoDadosBase.AddParameter("@FLAG_MOSTRA_USU_ID_NEGATIVO", "S");
                }

                dt = acessoDadosBase.ExecuteDataSet(CommandType.StoredProcedure,
                                                    "prUSUFCNACAO_SEL_BUSCAR").Tables[0];

                // Renomear Colunas
                RenomearColunas(ref dt);
            }
            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;
            }

            return(dt);
        }
        /// <summary>
        /// Buscar Log de Alterações em Permissões de Usuários
        /// </summary>
        /// <param name="idUsuario">ID do Usuário</param>
        /// <param name="idSistema">ID do Sistema</param>
        /// <param name="idSistemaFuncionalidade">ID da Funcionalidade do Sistema</param>
        /// <param name="codigoSistemaFuncionalidadeAcao">Código da Ação na Funcionalidade do Sistema</param>
        /// <param name="enmPermissaoOperacao">Operação: Adição ou Remoção de Permissão de Acesso</param>
        /// <param name="idUsuarioPermissao">ID do Usuário que efetivou a Operação de Permissão</param>
        /// <param name="dataOperacao_Inicio">Data da Efetivação a Operação de Permissão - Início</param>
        /// <param name="dataOperacao_Termino">Data da Efetivação a Operação de Permissão - Término</param>
        ///<param name="enmStatusUsuario">Status do Usuário</param>
        public DataTable Buscar(Int32 idUsuario,
                                Int32 idSistema,
                                Int32 idSistemaFuncionalidade,
                                String codigoSistemaFuncionalidadeAcao,
                                enumPermissaoOperacao enmPermissaoOperacao,
                                Int32 idUsuarioPermissao,
                                DateTime dataOperacao_Inicio,
                                DateTime dataOperacao_Termino,
                                CaseBusiness.CtrlAcesso.UsuarioStatus.enumStatus enmStatusUsuario)
        {
            DataTable dt = null;

            try
            {
                String _operacao      = String.Empty;
                String _statusUsuario = String.Empty;

                switch (enmPermissaoOperacao)
                {
                case enumPermissaoOperacao.EMPTY: _operacao = String.Empty; break;

                case enumPermissaoOperacao.ADICAO: _operacao = kPermissaoOperacao_ADICAO; break;

                case enumPermissaoOperacao.REMOCAO: _operacao = kPermissaoOperacao_REMOCAO; break;
                }

                _statusUsuario = UsuarioStatus.ObterDBValue(enmStatusUsuario);
                //switch(enmStatusUsuario)
                //{
                //    case UsuarioStatusLog.enumStatus.EMPTY: _statusUsuario = String.Empty; break;
                //    case UsuarioStatusLog.enumStatus.ATIVO: _statusUsuario = CaseBusiness.CtrlAcesso.UsuarioStatusLog.kStatus_ATIVO_DBValue; break;
                //    case UsuarioStatusLog.enumStatus.INATIVO: _statusUsuario = CaseBusiness.CtrlAcesso.UsuarioStatusLog.kStatus_INATIVO_DBValue; break;
                //}

                acessoDadosBase.AddParameter("@USU_ID", idUsuario);
                acessoDadosBase.AddParameter("@SIST_ID", idSistema);
                acessoDadosBase.AddParameter("@SISTFCN_ID", idSistemaFuncionalidade);
                acessoDadosBase.AddParameter("@SISTFCNACAO_CD", codigoSistemaFuncionalidadeAcao.Trim().ToUpper());
                acessoDadosBase.AddParameter("@USUACAOLOG_OPER_CD", _operacao);
                acessoDadosBase.AddParameter("@USU_ID_OPER", idUsuarioPermissao);
                acessoDadosBase.AddParameter("@USUACAOLOG_DH_INI", dataOperacao_Inicio);
                acessoDadosBase.AddParameter("@USUACAOLOG_DH_TER", dataOperacao_Termino);
                acessoDadosBase.AddParameter("@USU_ST", _statusUsuario);

                // Habilita Usuarios ID Negativos 2RP.Net se o Logado for um deles
                if (this.UsuarioManutencao.ID < 0)
                {
                    acessoDadosBase.AddParameter("@FLAG_MOSTRA_USU_ID_NEGATIVO", "S");
                }

                dt = acessoDadosBase.ExecuteDataSet(CommandType.StoredProcedure,
                                                    "prUSUACAOLOG_SEL_BUSCAR").Tables[0];

                // Renomear Colunas
                RenomearColunas(ref dt);
            }
            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;
            }

            return(dt);
        }