/// <summary> /// Atualiza a participacão de um usuário /// </summary> /// <param name="IdParticipacao">Id da Participação</param> /// <param name="participacao">participação do usuário (Autorizado ou Não Autorizado)</param> public static void AtualizarParticipacaoUsuario(int IdParticipacao, Autorizacao autorizacao, string Mensagem) { using (Escopo escopo = new Escopo(OpcaoTransacao.Requerido)) { string sql = @"UPDATE CadeiaAutorizacao.UsuarioParticipacao SET Usp_Autorizacao = @Autorizacao, Usp_Mensagem = @Mensagem WHERE Usp_Id = @IdParticipacao"; BdUtil bd = new BdUtil(sql); bd.AdicionarParametro("@IdParticipacao", DbType.Int32, IdParticipacao); bd.AdicionarParametro("@Autorizacao", DbType.Int16, autorizacao); bd.AdicionarParametro("@Mensagem", DbType.String, Mensagem); bd.ExecuteNonQuery(); // Verificando se a participacao do usuário finalizou a instância da cadeia // Aprovando ou Não aprovando int IdInstacia = ObterIDInstaciaPelaParticipacao(IdParticipacao); int respAutorizacao = VerificarAutorizacao(IdInstacia, IdParticipacao); AtualizarStatusInstancia(IdInstacia, respAutorizacao); if (respAutorizacao == 1 || respAutorizacao == 2) { //Executando o método do sistema indicando o resultado da autorização ExecutarMetodoSistema(IdParticipacao, autorizacao, Mensagem); } escopo.Terminar(); } }
/// <summary> /// Cria uma nova instância de cadeia de autorização (tabela: CadeiaAutorizacaoInstancia) /// Adicionando também as paticipações dos superiores hierárquicos do usuário participante /// </summary> /// <param name="IdCadeia">Id da cadeia de autorização</param> /// <param name="IdProprietario">Id do usuário proprietário da instância da cadeia</param> /// <param name="valor">valor</param> /// <param name="descricao">descrição (título)</param> /// <param name="conteudo">conteúdo da instância</param> /// <param name="parametrosFuncaoHierarquia">Coleção com os parâmetros para executar a função de hierarquia. /// deverá ser null quando a cadeia não possuir função armazenada de hierarquia</param> /// <returns>Id da instância cadeia. O sistema deverá armazenar este valor, pois quando /// esta instância de cadeia for finalizada este valor será fornecido /// ao método do sistema especificado em CadeiaAutorizacao.Cau_MetodoSistema /// </returns> public static int Incluir(int IdCadeia, int IdProprietario, float? valor, string descricao, string conteudo, CadeiaAutorizacaoDataSet.ParemetroFuncaoHierarquiaDataTable parametrosFuncaoHierarquia) { int IdInstancia = 0; using (Escopo escopo = new Escopo(OpcaoTransacao.Requerido)) { IdInstancia = IncluirInstancia(descricao, DateTime.Now, StatusCadeia.Aberta, valor, conteudo, IdCadeia, IdProprietario); // Recuperar os superiores do usuário (através da funções ou tabelas de hierarquia) e // para cada superior inserir uma linha na tabela UsuarioParticipante, // onde o usuário de maior hierarquia será o Responsável DataTable superiores = ObterSuperioresUsuario(IdCadeia, IdProprietario, parametrosFuncaoHierarquia); // Incluíndo a participação de cada superior for (int i = 0; i < superiores.Rows.Count; i++) { DataRow superior = superiores.Rows[i]; // Se a hierarquia for descoberta através das tabelas if (parametrosFuncaoHierarquia == null) { // A participação padrão é 2 = Colaborador TipoParticipacao participacao = TipoParticipacao.Colaborador; // O úlimo será o superior de mais alto nível, sendo o responsável if (i == superiores.Rows.Count - 1) { participacao = TipoParticipacao.Responsavel; } // Adicionando a participação do superior IncluirParticipante(IdInstancia, Convert.ToInt32(superior["IdSuperior"]), DateTime.Now, participacao); } else // Se a hierarquia for descoberta através de stored function { IncluirParticipante(IdInstancia, Convert.ToInt32(superior["IdSuperior"]), DateTime.Now, (TipoParticipacao) superior["Participacao"]); } } escopo.Terminar(); } return IdInstancia; }
/// <summary> /// Adiciona um substituto para um usuário, copiando as participações para /// o substituto /// </summary> /// <param name="IdUsuario">Id do usuário</param> /// <param name="IdSubstituto">Id do substituto</param> public static void AdicionarSubstituto(int IdUsuario, int IdSubstituto) { using (Escopo escopo = new Escopo(OpcaoTransacao.Requerido)) { // Inserir na tabela susbstituição InserirSubstituicao(IdUsuario, IdSubstituto); // Copiar as participações do usuário para o substituto CopiarParticipacoes(IdUsuario, IdSubstituto); escopo.Terminar(); } }