public Task Handle(AtualizarEscopoCommand message, CancellationToken cancellationToken) { if (!message.IsValid()) { NotifyValidationErrors(message); return(Task.CompletedTask); } var escopo = new Escopo(message.Id, message.Nome); _escopoRepository.Update(escopo); if (Commit()) { Bus.RaiseEvent(new EscopoUpdatedEvent(escopo.Id, escopo.Nome)); return(Task.CompletedTask); } return(Task.CompletedTask); }
public Task Handle(CadastrarEscopoCommand message, CancellationToken cancellationToken) { if (!message.IsValid()) { NotifyValidationErrors(message); return(Task.CompletedTask); } var escopo = new Escopo(Guid.NewGuid(), message.Nome); _escopoRepository.Add(escopo); if (Commit()) { Bus.RaiseEvent(new EscopoRegisteredEvent(escopo.Id, escopo.Nome)); return(Task.CompletedTask); } return(Task.CompletedTask); }
/// <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> /// 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> /// 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(); } }
/// <summary> /// Constroi o mapa do site baseada na permissão do usuário logado /// </summary> /// <returns></returns> public override SiteMapNode BuildSiteMap() { if (SecvAuthenticationTicket.Atual == null) return SiteMapNodeBase; // Indica se o acesso esta sendo feito via internet ou intranet bool acessoViaInternet = SecvAuthenticationTicket.Atual.AcessoViaInternet; // Inicia com um estado limpo Clear(); SiteMapNodeBase = new SiteMapNode(this, String.Empty, "~/", "Início"); SiteMapNodeBase.Roles = new string[] { "*" }; AddNode(SiteMapNodeBase, null); NosSiteMapDataSet nosSiteMapDataSet; using (Escopo escopo = new Escopo()) { nosSiteMapDataSet = ConstruirNos(); } // TODO Colocar codigo para testar se o acesso eh externo ou interno foreach (NosSiteMapDataSet.RaizRow raizRow in nosSiteMapDataSet.Raiz) { if (acessoViaInternet && !raizRow.PermiteAcessoInternet) continue; SiteMapNode raizMapNode = CriarRaizSiteMapNode(raizRow); foreach (NosSiteMapDataSet.NoRow noRow in raizRow.GetChildRows("Raiz_No")) { if (acessoViaInternet && !noRow.PermiteAcessoInternet) continue; SiteMapNode noMapNode = CriarNoSiteMapNode(raizMapNode, noRow); AddNode(noMapNode, raizMapNode); } AddNode(raizMapNode, SiteMapNodeBase); } return SiteMapNodeBase; }