public static int Inserir (System.String Cau_Descri, System.Int32 Cau_TipoAprovacao, System.String Cau_UrlAprovacao, System.Int32? Hie_Id, System.String Cau_ClasseRetorno, System.String Cau_MetodoRetorno){

      string sql = @"
INSERT INTO CadeiaAutorizacao.Cadeia
(
 Cau_Descri, 
 Cau_TipoAprovacao, 
 Cau_UrlAprovacao, 
 Hie_Id, 
 Cau_ClasseRetorno, 
 Cau_MetodoRetorno
)
    VALUES 
(
@Cau_Descri, 
@Cau_TipoAprovacao, 
@Cau_UrlAprovacao, 
@Hie_Id, 
@Cau_ClasseRetorno, 
@Cau_MetodoRetorno
); SELECT SCOPE_IDENTITY();
";
	BdUtil bd = new BdUtil(sql); 
	bd.AdicionarParametro("@Cau_Descri", System.Data.DbType.String, 50, Cau_Descri );
	bd.AdicionarParametro("@Cau_TipoAprovacao", System.Data.DbType.Int32, -1, Cau_TipoAprovacao );
	bd.AdicionarParametro("@Cau_UrlAprovacao", System.Data.DbType.String, 100, Cau_UrlAprovacao );
	bd.AdicionarParametro("@Hie_Id", System.Data.DbType.Int32, -1, Hie_Id );
	bd.AdicionarParametro("@Cau_ClasseRetorno", System.Data.DbType.String, 100, Cau_ClasseRetorno );
	bd.AdicionarParametro("@Cau_MetodoRetorno", System.Data.DbType.String, 50, Cau_MetodoRetorno );

	 object objRetorno = bd.ExecuteScalar();
	 return ( objRetorno == null || Convert.IsDBNull(objRetorno)) ? 0 : Convert.ToInt32(objRetorno);
	}
        public static int Inserir(System.String Hie_Descri, System.String Hie_Funcao)
        {

            string sql = @"
INSERT INTO CadeiaAutorizacao.Hierarquia
(
 Hie_Descri, 
 Hie_Funcao, 
 Hie_DatInc, 
 Hie_UsuInc, 
 Hie_UsuTra, 
 Hie_DatHor
)
    VALUES 
(
@Hie_Descri, 
@Hie_Funcao, 
GetDate(), 
@Hie_UsuInc, 
@Hie_UsuTra, 
GetDate()
); SELECT SCOPE_IDENTITY();
";
            BdUtil bd = new BdUtil(sql);
            bd.AdicionarParametro("@Hie_Descri", System.Data.DbType.String, 50, Hie_Descri);
            bd.AdicionarParametro("@Hie_Funcao", System.Data.DbType.String, 100, Hie_Funcao);
            bd.AdicionarParametro("@Hie_UsuInc", System.Data.DbType.String, 15, System.Threading.Thread.CurrentPrincipal.Identity.Name);
            bd.AdicionarParametro("@Hie_UsuTra", System.Data.DbType.String, 15, System.Threading.Thread.CurrentPrincipal.Identity.Name);

            object objRetorno = bd.ExecuteScalar();
            return (objRetorno == null || Convert.IsDBNull(objRetorno)) ? 0 : Convert.ToInt32(objRetorno);
        }
        public static int Inserir(System.Int32 Hie_Id, System.Int32 Usu_Id, System.Decimal? Hus_Alcada, System.Int32? Usu_IdSuperior)
        {

            string sql = @"
INSERT INTO CadeiaAutorizacao.HierarquiaUsuario
(
 Hie_Id, 
 Usu_Id, 
 Hus_Alcada, 
 Usu_IdSuperior, 
 Hus_DatInc, 
 Hus_UsuInc, 
 Hus_DatHor, 
 Hus_UsuTra
)
    VALUES 
(
@Hie_Id, 
@Usu_Id, 
@Hus_Alcada, 
@Usu_IdSuperior, 
GetDate(), 
@Hus_UsuInc, 
GetDate(), 
@Hus_UsuTra
); SELECT SCOPE_IDENTITY();
";
            BdUtil bd = new BdUtil(sql);
            bd.AdicionarParametro("@Hie_Id", System.Data.DbType.Int32, -1, Hie_Id);
            bd.AdicionarParametro("@Usu_Id", System.Data.DbType.Int32, -1, Usu_Id);
            bd.AdicionarParametro("@Hus_Alcada", System.Data.DbType.Decimal, -1, Hus_Alcada);
            bd.AdicionarParametro("@Usu_IdSuperior", System.Data.DbType.Int32, -1, Usu_IdSuperior);
            bd.AdicionarParametro("@Hus_UsuInc", System.Data.DbType.String, 15, System.Threading.Thread.CurrentPrincipal.Identity.Name);
            bd.AdicionarParametro("@Hus_UsuTra", System.Data.DbType.String, 15, System.Threading.Thread.CurrentPrincipal.Identity.Name);

            object objRetorno = bd.ExecuteScalar();
            return (objRetorno == null || Convert.IsDBNull(objRetorno)) ? 0 : Convert.ToInt32(objRetorno);
        }
 /// <summary>
 /// Verifica as autorizações para a instância de uma cadeia a partir de uma participação
 /// </summary>
 /// <param name="IdParticipacao">Id da participação</param>
 /// <returns>Status da instância da cadeia de acordo com a participação fornecida</returns>
 private static int VerificarAutorizacao(int IdInstacia, int IdParticipacao)
 {
     //BdUtil bd = new BdUtil("select CadeiaAutorizacao.UF_VerificarAutorizacao(@IdInstancia, @IdParticipacao)");
     BdUtil bd = new BdUtil("select CadeiaAutorizacao.UF_VerificarAutorizacao(@IdParticipacao)");
     //bd.AdicionarParametro("@IdInstancia", DbType.Int32, IdInstacia);
     bd.AdicionarParametro("@IdParticipacao", DbType.Int32, IdParticipacao);
     return bd.ExecuteScalar<int>();
 }
 /// <summary>
 /// Obtém o nome da função de hierarquia para uma determinada cadeia
 /// </summary>
 /// <param name="IdCadeia">Id da cadeia</param>
 /// <returns>Nome da stored function de hierarquia</returns>
 private static string ObterNomeFuncaHierarquia(int IdCadeia)
 {
     string sql = @"SELECT h.Hie_Funcao
                      FROM CadeiaAutorizacao.Hierarquia h
                      INNER JOIN CadeiaAutorizacao.Cadeia c on c.Hie_Id = h.Hie_Id
                      WHERE c.cau_Id = @IdCadeia";
     BdUtil bd = new BdUtil(sql);
     bd.AdicionarParametro("@IdCadeia", DbType.Int32, IdCadeia);
     return Convert.ToString(bd.ExecuteScalar());
 }
 /// <summary>
 /// Insere no banco de dados uma instância de cadeia de autorização
 /// </summary>
 /// <param name="descricao">Descrição da instância</param>
 /// <param name="data">Data</param>
 /// <param name="statusCadeia">Status</param>
 /// <param name="valor">Valor</param>
 /// <param name="conteudo">Conteúdo</param>
 /// <param name="IdCadeia">Id da cadeia</param>
 /// <param name="IdProprietario">Id do usuário que iniciou a instância da cadeia</param>
 /// <returns></returns>
 private static int IncluirInstancia(string descricao, DateTime data, StatusCadeia statusCadeia, float? valor, string conteudo,
     int IdCadeia, int IdProprietario)
 {
     string sql = @"INSERT INTO CadeiaAutorizacao.CadeiaInstancia
                      (Cai_Descri, Cai_Data, Cai_Status, Cau_Id, Usu_IdProprietario, Cai_Valor, Cai_Conteudo)
                      VALUES (@Cai_Descri, @Cai_Data, @Cai_Status, @Cau_Id, @Usu_IdProprietario, @Cai_Valor, @Cai_Conteudo);
                    SELECT SCOPE_IDENTITY();";
     BdUtil bd = new BdUtil(sql);
     bd.AdicionarParametro("@Cai_Descri", DbType.String, descricao);
     bd.AdicionarParametro("@Cai_Data", DbType.DateTime, data);
     bd.AdicionarParametro("@Cai_Status", DbType.Int16, (int)statusCadeia);
     bd.AdicionarParametro("@Cau_Id", DbType.Int32, IdCadeia);
     bd.AdicionarParametro("@Usu_IdProprietario", DbType.Int32, IdProprietario);
     bd.AdicionarParametro("@Cai_Valor", DbType.Decimal, valor);
     bd.AdicionarParametro("@Cai_Conteudo", DbType.String, conteudo);
     object objRetorno = bd.ExecuteScalar();
     return (objRetorno == null) ? 0 : Convert.ToInt32(objRetorno);
 }
 public static int ObterQuantidadeParticipacoesAtivas(int usu_ID)
 {
     string sql = @"SELECT count(*)
                       FROM CadeiaAutorizacao.UsuarioParticipacao usp
                       JOIN CadeiaAutorizacao.CadeiaInstancia cai on cai.Cai_Id = usp.Cai_Id
                       WHERE usp.Usp_Autorizacao = 0 AND
                             cai.cai_status = 0 AND
                             usp.Usu_Id = @IdUsuario";
     BdUtil bd = new BdUtil(sql);
     bd.AdicionarParametro("@IdUsuario", DbType.Int32, usu_ID);
     return bd.ExecuteScalar<int>();
 }
 public static int ObterIDInstaciaPelaParticipacao(int IdParticipacao)
 {
     //Obtendo o Id da instância
     string sql = @"
     SELECT Cai_Id
        FROM CadeiaAutorizacao.UsuarioParticipacao
        WHERE Usp_Id = @IdParticipacao";
     BdUtil bd = new BdUtil(sql);
     bd.AdicionarParametro("@IdParticipacao", DbType.Int32, IdParticipacao);
     return bd.ExecuteScalar<int>();
 }
 /// <summary>
 /// Retorna o chamado para o Usp_ID
 /// </summary>
 /// <param name="usp_ID"></param>
 /// <returns></returns>
 public static int ObterCai_IDPorUsp_ID(int usp_ID)
 {
     string sql = @"SELECT Cai_ID
                 FROM CadeiaAutorizacao.UsuarioParticipacao
                 WHERE Usp_ID = @Usp_ID";
     BdUtil bd = new BdUtil(sql);
     bd.AdicionarParametro("@Usp_ID", DbType.Int32, usp_ID);
     return bd.ExecuteScalar<int>();
 }
 /// <summary>
 /// Altera a situação de uma cadeia de autorização.
 /// </summary>
 /// <param name="IdInstancia">Id da Instância</param>
 /// <param name="IdUsuario">Id do usuário.</param>
 /// <param name="Sitaucao">Nova situação.</param>
 /// <param name="Mensagem">Mensagem ou observação do usuário.</param>
 /// <returns>o "Usp_ID"</returns>
 public static int AtualizarParticipacaoUsuario(int IdInstancia, int IdUsuario, Autorizacao Autorizacao, string Mensagem)
 {
     string sql = @"
     SELECT Usp_Id
     FROM CadeiaAutorizacao.UsuarioParticipacao
     WHERE Usu_Id = @Usu_Id
     AND   Cai_Id = @Cai_Id
     ";
     BdUtil bd = new BdUtil(sql);
     bd.AdicionarParametro("@Usu_Id", DbType.Int32, IdUsuario);
     bd.AdicionarParametro("@Cai_Id", DbType.Int32, IdInstancia);
     int uspId = bd.ExecuteScalar<int>();
     AtualizarParticipacaoUsuario(uspId, Autorizacao, Mensagem);
     return uspId;
 }