Exemple #1
0
        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);
        }
Exemple #2
0
        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;
        }