Ejemplo n.º 1
0
        private Cargo?EnviaNotificacaoParaNivel(WorkflowAprovacaoNivel nivel, long codigoNotificacao)
        {
            Notificacao    notificacao;
            List <Usuario> usuarios = nivel.Usuarios.ToList();

            if (nivel.Cargo.HasValue)
            {
                var funcionariosRetorno = servicoNotificacao.ObterFuncionariosPorNivel(nivel.Workflow.UeId, nivel.Cargo);

                foreach (var funcionario in funcionariosRetorno)
                {
                    try
                    {
                        usuarios.Add(servicoUsuario.ObterUsuarioPorCodigoRfLoginOuAdiciona(string.Empty, funcionario.Id, buscaLogin: true));
                    }
                    catch (Exception e)
                    {
                        SentrySdk.CaptureException(e);
                    }
                }
            }

            foreach (var usuario in usuarios)
            {
                notificacao = new Notificacao()
                {
                    Ano       = nivel.Workflow.Ano,
                    Categoria = nivel.Workflow.NotificacaoCategoria,
                    DreId     = nivel.Workflow.DreId,
                    UeId      = nivel.Workflow.UeId,
                    Mensagem  = nivel.Workflow.NotifacaoMensagem,
                    Tipo      = nivel.Workflow.NotificacaoTipo,
                    Titulo    = nivel.Workflow.NotifacaoTitulo,
                    TurmaId   = nivel.Workflow.TurmaId,
                    UsuarioId = usuario.Id,
                    Codigo    = codigoNotificacao
                };

                nivel.Adicionar(notificacao);

                repositorioNotificacao.Salvar(notificacao);

                repositorioWorkflowAprovacaoNivelNotificacao.Salvar(new WorkflowAprovacaoNivelNotificacao()
                {
                    NotificacaoId            = notificacao.Id,
                    WorkflowAprovacaoNivelId = nivel.Id
                });

                if (notificacao.Categoria == NotificacaoCategoria.Workflow_Aprovacao)
                {
                    nivel.Status = WorkflowAprovacaoNivelStatus.AguardandoAprovacao;
                    workflowAprovacaoNivel.Salvar(nivel);
                }
            }

            return(nivel.Cargo);
        }
Ejemplo n.º 2
0
        private async Task TrataNovoFuncionarioNivel(WorkflowAprovacao wfAprovacao, WorkflowAprovacaoNivel nivelDoCargo, string funcionarioRF)
        {
            var notificacaoBase = wfAprovacao.Niveis.Where(a => a.Notificacoes.Any()).SelectMany(a => a.Notificacoes).FirstOrDefault();

            var notificarUsuarioCommand = new NotificarUsuarioCommand(
                wfAprovacao.NotifacaoTitulo,
                wfAprovacao.NotifacaoMensagem,
                funcionarioRF,
                (NotificacaoCategoria)wfAprovacao.NotificacaoCategoria,
                (NotificacaoTipo)wfAprovacao.NotificacaoTipo,
                wfAprovacao.DreId,
                wfAprovacao.UeId,
                wfAprovacao.TurmaId,
                wfAprovacao.Ano,
                notificacaoBase.Codigo,
                notificacaoBase.CriadoEm);

            var notificacaoId = await mediator.Send(notificarUsuarioCommand);

            repositorioWorkflowAprovacaoNivelNotificacao.Salvar(new WorkflowAprovacaoNivelNotificacao()
            {
                NotificacaoId            = notificacaoId,
                WorkflowAprovacaoNivelId = nivelDoCargo.Id
            });
        }
Ejemplo n.º 3
0
        private async Task TrataNovoNivel(WorkflowAprovacao wfAprovacao, WorkflowAprovacaoNivel nivelDoCargo, List <FuncionarioCargoDTO> funcionariosCargosDaUe)
        {
            var funcionariosDoNivel = funcionariosCargosDaUe.Where(a => a.CargoId == (int)nivelDoCargo.Cargo);
            var notificacaoBase     = wfAprovacao.Niveis.Where(a => a.Notificacoes.Any()).SelectMany(a => a.Notificacoes).FirstOrDefault();

            foreach (var funcionarioDoNivel in funcionariosDoNivel)
            {
                var notificarUsuarioCommand = new NotificarUsuarioCommand(
                    wfAprovacao.NotifacaoTitulo,
                    wfAprovacao.NotifacaoMensagem,
                    funcionarioDoNivel.FuncionarioRF,
                    (NotificacaoCategoria)wfAprovacao.NotificacaoCategoria,
                    (NotificacaoTipo)wfAprovacao.NotificacaoTipo,
                    wfAprovacao.DreId,
                    wfAprovacao.UeId,
                    wfAprovacao.TurmaId,
                    wfAprovacao.Ano,
                    notificacaoBase.Codigo,
                    notificacaoBase.CriadoEm);

                var notificacaoId = await mediator.Send(notificarUsuarioCommand);

                repositorioWorkflowAprovacaoNivelNotificacao.Salvar(new WorkflowAprovacaoNivelNotificacao()
                {
                    NotificacaoId            = notificacaoId,
                    WorkflowAprovacaoNivelId = nivelDoCargo.Id
                });
            }
        }
Ejemplo n.º 4
0
        private void EnviaNotificacaoParaNivel(WorkflowAprovacaoNivel nivel, long codigoNotificacao)
        {
            Notificacao    notificacao;
            List <Usuario> usuarios = nivel.Usuarios.ToList();

            if (nivel.Cargo.HasValue)
            {
                if (nivel.Cargo == Cargo.Supervisor)
                {
                    var supervisoresEscola = repositorioSupervisorEscolaDre.ObtemSupervisoresPorUe(nivel.Workflow.UeId);
                    if (supervisoresEscola == null || supervisoresEscola.Count() == 0)
                    {
                        throw new NegocioException($"Não foram encontrados supervisores atribuídos para a escola de código {nivel.Workflow.UeId} para enviar para o nível {nivel.Nivel}.");
                    }

                    foreach (var supervisorEscola in supervisoresEscola)
                    {
                        usuarios.Add(servicoUsuario.ObterUsuarioPorCodigoRfLoginOuAdiciona(supervisorEscola.SupervisorId));
                    }
                }
                else
                {
                    var funcionariosRetornoEol = servicoEOL.ObterFuncionariosPorCargoUe(nivel.Workflow.UeId, (int)nivel.Cargo.Value);
                    if (funcionariosRetornoEol == null || funcionariosRetornoEol.Count() == 0)
                    {
                        throw new NegocioException($"Não foram encontrados funcionários de cargo {nivel.Cargo.GetAttribute<DisplayAttribute>().Name} para a escola de código {nivel.Workflow.UeId} para enviar para o nível {nivel.Nivel}.");
                    }

                    foreach (var usuario in funcionariosRetornoEol)
                    {
                        usuarios.Add(servicoUsuario.ObterUsuarioPorCodigoRfLoginOuAdiciona(usuario.CodigoRf));
                    }
                }
            }

            foreach (var usuario in usuarios)
            {
                notificacao = new Notificacao()
                {
                    Ano       = nivel.Workflow.Ano,
                    Categoria = nivel.Workflow.NotificacaoCategoria,
                    DreId     = nivel.Workflow.DreId,
                    UeId      = nivel.Workflow.UeId,
                    Mensagem  = nivel.Workflow.NotifacaoMensagem,
                    Tipo      = nivel.Workflow.NotificacaoTipo,
                    Titulo    = nivel.Workflow.NotifacaoTitulo,
                    TurmaId   = nivel.Workflow.TurmaId,
                    UsuarioId = usuario.Id,
                    Codigo    = codigoNotificacao
                };

                nivel.Adicionar(notificacao);

                repositorioNotificacao.Salvar(notificacao);

                repositorioWorkflowAprovacaoNivelNotificacao.Salvar(new WorkflowAprovacaoNivelNotificacao()
                {
                    NotificacaoId            = notificacao.Id,
                    WorkflowAprovacaoNivelId = nivel.Id
                });

                if (notificacao.Categoria == NotificacaoCategoria.Workflow_Aprovacao)
                {
                    nivel.Status = WorkflowAprovacaoNivelStatus.AguardandoAprovacao;
                    workflowAprovacaoNivel.Salvar(nivel);
                }
            }
        }