Exemplo n.º 1
0
        public void Salvar(WorkflowAprovacaoDto workflowAprovacaoNiveisDto)
        {
            WorkflowAprovacao workflowAprovacao = MapearDtoParaEntidade(workflowAprovacaoNiveisDto);

            unitOfWork.IniciarTransacao();

            repositorioWorkflowAprovacao.Salvar(workflowAprovacao);

            foreach (var workflowAprovacaoNivel in workflowAprovacao.Niveis)
            {
                workflowAprovacaoNivel.WorkflowId = workflowAprovacao.Id;
                repositorioWorkflowAprovacaoNivel.Salvar(workflowAprovacaoNivel);

                foreach (var usuario in workflowAprovacaoNivel.Usuarios)
                {
                    repositorioWorkflowAprovacaoNivelUsuario.Salvar(new WorkflowAprovacaoNivelUsuario()
                    {
                        UsuarioId = usuario.Id,
                        WorkflowAprovacaoNivelId = workflowAprovacaoNivel.Id
                    });
                }
            }

            servicoWorkflowAprovacao.ConfiguracaoInicial(workflowAprovacao);
        }
Exemplo 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
            });
        }
Exemplo n.º 3
0
        private async Task <WorkflowAprovacao> MapearDtoParaEntidade(WorkflowAprovacaoDto workflowAprovacaoNiveisDto)
        {
            WorkflowAprovacao workflowAprovacao = new WorkflowAprovacao();

            workflowAprovacao.Ano                  = workflowAprovacaoNiveisDto.Ano;
            workflowAprovacao.DreId                = workflowAprovacaoNiveisDto.DreId;
            workflowAprovacao.UeId                 = workflowAprovacaoNiveisDto.UeId;
            workflowAprovacao.TurmaId              = workflowAprovacaoNiveisDto.TurmaId;
            workflowAprovacao.NotifacaoMensagem    = workflowAprovacaoNiveisDto.NotificacaoMensagem;
            workflowAprovacao.NotifacaoTitulo      = workflowAprovacaoNiveisDto.NotificacaoTitulo;
            workflowAprovacao.NotificacaoTipo      = workflowAprovacaoNiveisDto.NotificacaoTipo;
            workflowAprovacao.NotificacaoCategoria = workflowAprovacaoNiveisDto.NotificacaoCategoria;
            workflowAprovacao.Tipo                 = workflowAprovacaoNiveisDto.Tipo;

            foreach (var nivel in workflowAprovacaoNiveisDto.Niveis)
            {
                var workflowNivel = new WorkflowAprovacaoNivel()
                {
                    Cargo = nivel.Cargo,
                    Nivel = nivel.Nivel
                };

                if (nivel.UsuariosRf != null && nivel.UsuariosRf.Length > 0)
                {
                    foreach (var usuarioRf in nivel.UsuariosRf)
                    {
                        workflowNivel.Adicionar(await ObterUsuarioPorRf(usuarioRf));
                    }
                }

                workflowAprovacao.Adicionar(workflowNivel);
            }
            return(workflowAprovacao);
        }
        private static WorkflowAprovacao GeraWorkflow()
        {
            var workflowAprovacao = new WorkflowAprovacao();

            workflowAprovacao.Adicionar(new WorkflowAprovacaoNivel()
            {
                Nivel = 1, Cargo = Cargo.AD
            });
            workflowAprovacao.Adicionar(new WorkflowAprovacaoNivel()
            {
                Nivel = 1, Cargo = Cargo.Diretor
            });
            workflowAprovacao.Adicionar(new WorkflowAprovacaoNivel()
            {
                Nivel = 2, Cargo = Cargo.Diretor
            });
            workflowAprovacao.Adicionar(new WorkflowAprovacaoNivel()
            {
                Nivel = 3, Cargo = Cargo.Diretor
            });
            workflowAprovacao.Adicionar(new WorkflowAprovacaoNivel()
            {
                Nivel = 5, Cargo = Cargo.Diretor
            });
            workflowAprovacao.Adicionar(new WorkflowAprovacaoNivel()
            {
                Nivel = 10, Cargo = Cargo.Diretor
            });
            workflowAprovacao.Adicionar(new WorkflowAprovacaoNivel()
            {
                Nivel = 13, Cargo = Cargo.Diretor
            });
            return(workflowAprovacao);
        }
Exemplo n.º 5
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
                });
            }
        }
Exemplo n.º 6
0
        private async Task <bool> VerificaSeExisteNivelEadiciona(WorkflowAprovacao wfAprovacao, WorkflowAprovacaoNivel nivelParaModificar, Cargo cargo, List <FuncionarioCargoDTO> funcionariosCargosDaUe)
        {
            var nivelDoCargo = wfAprovacao.ObterPrimeiroNivelPorCargo(cargo);

            var modificaNiveisPosteriores = false;

            if (nivelDoCargo == null)
            {
                modificaNiveisPosteriores = true;

                nivelDoCargo = new WorkflowAprovacaoNivel()
                {
                    Cargo      = cargo,
                    Nivel      = nivelParaModificar.Nivel + 1,
                    WorkflowId = wfAprovacao.Id
                };
            }
            else
            {
                if (nivelDoCargo.Notificacoes.Any())
                {
                    return(false);
                }
            }

            await TrataModificacaoDosNiveis(funcionariosCargosDaUe, wfAprovacao, nivelParaModificar, true, nivelDoCargo, modificaNiveisPosteriores);

            return(true);
        }
Exemplo n.º 7
0
        private async Task AprovarNivel(WorkflowAprovacaoNivel nivel, WorkflowAprovacao workflow, long codigoDaNotificacao)
        {
            var niveis = workflow.ObtemNiveisParaEnvioPosAprovacao();

            if (niveis != null && niveis.Any())
            {
                EnviaNotificacaoParaNiveis(niveis.ToList(), codigoDaNotificacao);
            }
            else
            {
                if (workflow.Tipo == WorkflowAprovacaoTipo.Evento_Liberacao_Excepcional)
                {
                    await AprovarUltimoNivelEventoLiberacaoExcepcional(codigoDaNotificacao, workflow.Id);
                }
                else if (workflow.Tipo == WorkflowAprovacaoTipo.ReposicaoAula)
                {
                    await AprovarUltimoNivelDaReposicaoAula(codigoDaNotificacao, workflow.Id);
                }
                else if (workflow.Tipo == WorkflowAprovacaoTipo.Evento_Data_Passada)
                {
                    AprovarUltimoNivelDeEventoDataPassada(codigoDaNotificacao, workflow.Id);
                }
                else if (workflow.Tipo == WorkflowAprovacaoTipo.Fechamento_Reabertura)
                {
                    AprovarUltimoNivelDeEventoFechamentoReabertura(codigoDaNotificacao, workflow.Id, nivel.Id);
                }
                else if (workflow.Tipo == WorkflowAprovacaoTipo.AlteracaoNotaFechamento)
                {
                    await AprovarAlteracaoNotaFechamento(codigoDaNotificacao, workflow.Id, workflow.TurmaId, workflow.CriadoRF, workflow.CriadoPor);
                }
            }
        }
Exemplo n.º 8
0
        private void TrataReprovacaoEventoLiberacaoExcepcional(WorkflowAprovacao workflow, long codigoDaNotificacao, string motivo, Cargo?cargoDoNivelQueRecusou)
        {
            Evento evento = repositorioEvento.ObterPorWorkflowId(workflow.Id);

            if (evento == null)
            {
                throw new NegocioException("Não foi possível localizar o evento deste fluxo de aprovação.");
            }

            evento.ReprovarWorkflow();
            repositorioEvento.Salvar(evento);

            var escola = repositorioUe.ObterPorCodigo(evento.UeId);

            if (escola == null)
            {
                throw new NegocioException("Não foi possível localizar a Ue deste evento.");
            }

            if (cargoDoNivelQueRecusou == Cargo.Supervisor)
            {
                var funcionariosRetorno = servicoNotificacao.ObterFuncionariosPorNivel(evento.UeId, Cargo.Diretor);

                foreach (var funcionario in funcionariosRetorno)
                {
                    var usuarioDiretor = servicoUsuario.ObterUsuarioPorCodigoRfLoginOuAdiciona(funcionario.Id);

                    NotificarEventoQueFoiReprovado(evento, codigoDaNotificacao, usuarioDiretor, motivo, escola.Nome);
                }
            }
            var usuario = servicoUsuario.ObterUsuarioPorCodigoRfLoginOuAdiciona(evento.CriadoRF);

            NotificarEventoQueFoiReprovado(evento, codigoDaNotificacao, usuario, motivo, escola.Nome);
        }
Exemplo n.º 9
0
        public async Task Aprovar(WorkflowAprovacao workflow, bool aprovar, string observacao, long notificacaoId)
        {
            WorkflowAprovacaoNivel nivel = workflow.ObterNivelPorNotificacaoId(notificacaoId);

            var codigoDaNotificacao = nivel.Notificacoes.FirstOrDefault(a => a.Id == notificacaoId)?.Codigo;

            if (codigoDaNotificacao == null)
            {
                throw new NegocioException("Não foi possível localizar a notificação.");
            }

            nivel.PodeAprovar();

            var niveisParaPersistir = workflow.ModificarStatusPorNivel(aprovar ? WorkflowAprovacaoNivelStatus.Aprovado : WorkflowAprovacaoNivelStatus.Reprovado, nivel.Nivel, observacao);

            AtualizaNiveis(niveisParaPersistir);

            if (aprovar)
            {
                await AprovarNivel(nivel, workflow, (long)codigoDaNotificacao);
            }
            else
            {
                await ReprovarNivel(workflow, (long)codigoDaNotificacao, observacao, nivel.Cargo, nivel);
            }
        }
        private void AprovarNivel(WorkflowAprovacaoNivel nivel, long notificacaoId, WorkflowAprovacao workflow, long codigoDaNotificacao)
        {
            var niveis = workflow.ObtemNiveisParaEnvioPosAprovacao();

            if (niveis != null)
            {
                EnviaNotificacaoParaNiveis(niveis.ToList(), codigoDaNotificacao);
            }
            else
            {
                if (workflow.Tipo == WorkflowAprovacaoTipo.Evento_Liberacao_Excepcional)
                {
                    AprovarUltimoNivelEventoLiberacaoExcepcional(codigoDaNotificacao, workflow.Id);
                }
                else if (workflow.Tipo == WorkflowAprovacaoTipo.ReposicaoAula)
                {
                    AprovarUltimoNivelDaReposicaoAula(codigoDaNotificacao, workflow.Id);
                }
                else if (workflow.Tipo == WorkflowAprovacaoTipo.Evento_Data_Passada)
                {
                    AprovarUltimoNivelDeEventoDataPassada(codigoDaNotificacao, workflow.Id);
                }
                else if (workflow.Tipo == WorkflowAprovacaoTipo.Fechamento_Reabertura)
                {
                    AprovarUltimoNivelDeEventoFechamentoReabertura(codigoDaNotificacao, workflow.Id, nivel.Id);
                }
            }
        }
Exemplo n.º 11
0
        public async Task <long> Handle(SalvarWorkflowAprovacaoCommand request, CancellationToken cancellationToken)
        {
            if (request.WorkflowAprovacao.Tipo != WorkflowAprovacaoTipo.Basica && request.WorkflowAprovacao.EntidadeParaAprovarId == 0)
            {
                throw new NegocioException("Para um workflow diferente de básico, é necessário informar o Id da entidade para Aprovar.");
            }

            WorkflowAprovacao workflowAprovacao = await MapearDtoParaEntidade(request.WorkflowAprovacao);

            await repositorioWorkflowAprovacao.SalvarAsync(workflowAprovacao);

            foreach (var workflowAprovacaoNivel in workflowAprovacao.Niveis)
            {
                workflowAprovacaoNivel.WorkflowId = workflowAprovacao.Id;
                await repositorioWorkflowAprovacaoNivel.SalvarAsync(workflowAprovacaoNivel);

                foreach (var usuario in workflowAprovacaoNivel.Usuarios)
                {
                    repositorioWorkflowAprovacaoNivelUsuario.Salvar(new WorkflowAprovacaoNivelUsuario()
                    {
                        UsuarioId = usuario.Id,
                        WorkflowAprovacaoNivelId = workflowAprovacaoNivel.Id
                    });
                }
            }
            servicoWorkflowAprovacao.ConfiguracaoInicial(workflowAprovacao, request.WorkflowAprovacao.EntidadeParaAprovarId);

            return(workflowAprovacao.Id);
        }
        private WorkflowAprovacao ObterWorkflow(long notificacaoId)
        {
            WorkflowAprovacao workflow = repositorioWorkflowAprovacao.ObterEntidadeCompleta(0, notificacaoId);

            if (workflow == null)
            {
                throw new NegocioException($"Não foi possível localizar o fluxo de aprovação da notificação {notificacaoId}");
            }
            return(workflow);
        }
Exemplo n.º 13
0
 public void ConfiguracaoInicial(WorkflowAprovacao workflowAprovacao, long idEntidadeParaAprovar)
 {
     if (workflowAprovacao.NotificacaoCategoria == NotificacaoCategoria.Workflow_Aprovacao)
     {
         var niveisIniciais = workflowAprovacao.ObtemNiveis(workflowAprovacao.ObtemPrimeiroNivel()).ToList();
         EnviaNotificacaoParaNiveis(niveisIniciais);
     }
     else
     {
         EnviaNotificacaoParaNiveis(workflowAprovacao.Niveis.ToList());
     }
 }
Exemplo n.º 14
0
        private void TrataReprovacaoEventoDataPassada(WorkflowAprovacao workflow, long codigoDaNotificacao, string motivo)
        {
            Evento evento = repositorioEvento.ObterPorWorkflowId(workflow.Id);

            if (evento == null)
            {
                throw new NegocioException("Não foi possível localizar o evento deste fluxo de aprovação.");
            }

            evento.ReprovarWorkflow();
            repositorioEvento.Salvar(evento);

            NotificarCriadorEventoDataPassadaReprovacao(evento, codigoDaNotificacao, motivo);
        }
Exemplo n.º 15
0
        private async Task TrataReprovacaoReposicaoAula(WorkflowAprovacao workflow, long codigoDaNotificacao, string motivo)
        {
            Aula aula = repositorioAula.ObterPorWorkflowId(workflow.Id);

            if (aula == null)
            {
                throw new NegocioException("Não foi possível localizar a aula deste fluxo de aprovação.");
            }

            aula.ReprovarWorkflow();
            repositorioAula.Salvar(aula);

            await NotificarAulaReposicaoQueFoiReprovada(aula, codigoDaNotificacao, motivo);
        }
Exemplo n.º 16
0
        public void ConfiguracaoInicial(WorkflowAprovacao workflowAprovacao)
        {
            if (workflowAprovacao.NotificacaoCategoria == NotificacaoCategoria.Workflow_Aprovacao)
            {
                var niveisIniciais = workflowAprovacao.ObtemNiveis(workflowAprovacao.ObtemPrimeiroNivel()).ToList();
                EnviaNotificacaoParaNiveis(niveisIniciais);
            }
            else
            {
                EnviaNotificacaoParaNiveis(workflowAprovacao.Niveis.ToList());
            }

            unitOfWork.PersistirTransacao();
        }
        public void Deve_Retornar_Nivel_Por_Notificacao()
        {
            WorkflowAprovacao workflowAprovacao = GeraWorkflow();
            var nivel = workflowAprovacao.ObtemNiveis(5);

            Assert.True(nivel != null && nivel.FirstOrDefault().Nivel == 5);
            nivel.FirstOrDefault().Adicionar(new Notificacao()
            {
                Id = 10, Mensagem = "Mensagem de teste"
            });

            var nivelDaNotificacao = workflowAprovacao.ObterNivelPorNotificacaoId(10);

            Assert.True(nivelDaNotificacao != null && nivelDaNotificacao.Nivel == 5);
        }
Exemplo n.º 18
0
        private void TrataReprovacaoFechamentoReabertura(WorkflowAprovacao workflow, long codigoDaNotificacao, string motivo, long nivelId)
        {
            FechamentoReabertura fechamentoReabertura = repositorioFechamentoReabertura.ObterCompleto(0, workflow.Id);

            if (fechamentoReabertura == null)
            {
                throw new NegocioException("Não foi possível localizar a reabertura do fechamento do fluxo de aprovação.");
            }

            fechamentoReabertura.ReprovarWorkFlow();

            repositorioFechamentoReabertura.Salvar(fechamentoReabertura);

            NotificarAdminSgpUeFechamentoReaberturaReprovado(fechamentoReabertura, codigoDaNotificacao, motivo, nivelId);
            NotificarDiretorUeFechamentoReaberturaReprovado(fechamentoReabertura, codigoDaNotificacao, motivo, nivelId);
        }
 private void ReprovarNivel(WorkflowAprovacao workflow, long codigoDaNotificacao, string motivo, Cargo?cargoDoNivelQueRecusou, WorkflowAprovacaoNivel nivel)
 {
     if (workflow.Tipo == WorkflowAprovacaoTipo.Evento_Liberacao_Excepcional)
     {
         TrataReprovacaoEventoLiberacaoExcepcional(workflow, codigoDaNotificacao, motivo, cargoDoNivelQueRecusou);
     }
     else if (workflow.Tipo == WorkflowAprovacaoTipo.ReposicaoAula)
     {
         TrataReprovacaoReposicaoAula(workflow, codigoDaNotificacao, motivo);
     }
     else if (workflow.Tipo == WorkflowAprovacaoTipo.Evento_Data_Passada)
     {
         TrataReprovacaoEventoDataPassada(workflow, codigoDaNotificacao, motivo);
     }
     else if (workflow.Tipo == WorkflowAprovacaoTipo.Fechamento_Reabertura)
     {
         TrataReprovacaoFechamentoReabertura(workflow, codigoDaNotificacao, motivo, nivel.Id);
     }
 }
Exemplo n.º 20
0
        public void Aprovar(WorkflowAprovacao workflow, bool aprovar, string observacao, long notificacaoId)
        {
            WorkflowAprovacaoNivel nivel = workflow.ObterNivelPorNotificacaoId(notificacaoId);

            nivel.PodeAprovar();

            var niveisParaPersistir = workflow.ModificarStatusPorNivel(aprovar ? WorkflowAprovacaoNivelStatus.Aprovado : WorkflowAprovacaoNivelStatus.Reprovado, nivel.Nivel, observacao);

            AtualizaNiveis(niveisParaPersistir);

            if (aprovar)
            {
                var codigoDaNotificacao = nivel.Notificacoes
                                          .FirstOrDefault(a => a.Id == notificacaoId).Codigo;

                var niveis = workflow.ObtemNiveisParaEnvioPosAprovacao();
                if (niveis != null)
                {
                    EnviaNotificacaoParaNiveis(niveis.ToList(), codigoDaNotificacao);
                }
            }
        }
        public void Aprovar(WorkflowAprovacao workflow, bool aprovar, string observacao, long notificacaoId)
        {
            WorkflowAprovacaoNivel nivel = workflow.ObterNivelPorNotificacaoId(notificacaoId);

            nivel.PodeAprovar();

            var niveisParaPersistir = workflow.ModificarStatusPorNivel(aprovar ? WorkflowAprovacaoNivelStatus.Aprovado : WorkflowAprovacaoNivelStatus.Reprovado, nivel.Nivel, observacao);

            AtualizaNiveis(niveisParaPersistir);

            var codigoDaNotificacao = nivel.Notificacoes
                                      .FirstOrDefault(a => a.Id == notificacaoId).Codigo;

            if (aprovar)
            {
                AprovarNivel(nivel, notificacaoId, workflow, codigoDaNotificacao);
            }
            else
            {
                ReprovarNivel(workflow, codigoDaNotificacao, observacao, nivel.Cargo, nivel);
            }
        }
        public void Deve_Retornar_Niveis_Status()
        {
            WorkflowAprovacao workflowAprovacao = GeraWorkflow();

            Assert.Equal(6, workflowAprovacao.ObtemNiveisUnicosEStatus().Count());
        }
Exemplo n.º 23
0
        private async Task TrataCargoSupervisor(List <FuncionarioCargoDTO> funcionariosCargosDaUe, WorkflowAprovacao wfAprovacao, WorkflowAprovacaoNivel nivelParaModificar)
        {
            var supervisorTecnico = funcionariosCargosDaUe.FirstOrDefault(a => a.CargoId == (int)Cargo.SupervisorTecnico);

            if (supervisorTecnico != null)
            {
                await VerificaSeExisteNivelEadiciona(wfAprovacao, nivelParaModificar, Cargo.SupervisorTecnico, funcionariosCargosDaUe);
            }
        }
Exemplo n.º 24
0
        private async Task TrataReprovacaoAlteracaoNotaFechamento(WorkflowAprovacao workflow, long codigoDaNotificacao, string motivo)
        {
            var notasEmAprovacao = ObterNotasEmAprovacao(workflow.Id);

            await NotificarAprovacaoNotasFechamento(notasEmAprovacao, codigoDaNotificacao, workflow.TurmaId, false, motivo);
        }
Exemplo n.º 25
0
        private async Task TrataCargoCP(List <FuncionarioCargoDTO> funcionariosCargosDaUe, WorkflowAprovacao wfAprovacao, WorkflowAprovacaoNivel nivelParaModificar)
        {
            var ad = funcionariosCargosDaUe.FirstOrDefault(a => a.CargoId == (int)Cargo.AD);

            if (ad != null)
            {
                await VerificaSeExisteNivelEadiciona(wfAprovacao, nivelParaModificar, Cargo.AD, funcionariosCargosDaUe);
            }
            else
            {
                var diretor = funcionariosCargosDaUe.FirstOrDefault(a => a.CargoId == (int)Cargo.Diretor);
                if (diretor != null)
                {
                    await VerificaSeExisteNivelEadiciona(wfAprovacao, nivelParaModificar, Cargo.Diretor, funcionariosCargosDaUe);
                }
                else
                {
                    var supervisor = funcionariosCargosDaUe.FirstOrDefault(a => a.CargoId == (int)Cargo.Supervisor);
                    if (supervisor != null)
                    {
                        await VerificaSeExisteNivelEadiciona(wfAprovacao, nivelParaModificar, Cargo.Supervisor, funcionariosCargosDaUe);
                    }
                    else
                    {
                        await VerificaSeExisteNivelEadiciona(wfAprovacao, nivelParaModificar, Cargo.SupervisorTecnico, funcionariosCargosDaUe);
                    }
                }
            }
        }
Exemplo n.º 26
0
        private async Task TrataModificacaoDosNiveis(List <FuncionarioCargoDTO> funcionariosCargosDaUe, WorkflowAprovacao wfAprovacao, WorkflowAprovacaoNivel nivelParaModificar, bool modificarNivelAtual, WorkflowAprovacaoNivel nivelDoCargo, bool modificaNiveisPosteriores)
        {
            if (modificarNivelAtual)
            {
                if (modificaNiveisPosteriores)
                {
                    var niveisParaModificar = wfAprovacao.Niveis.Where(a => a.Nivel > nivelParaModificar.Nivel);

                    foreach (var nivel in niveisParaModificar)
                    {
                        nivel.Nivel += 1;
                        await repositorioWorkflowAprovacaoNivel.SalvarAsync(nivel);
                    }
                }

                await repositorioNotificacao.ExcluirLogicamentePorIdsAsync(nivelParaModificar.Notificacoes.Select(a => a.Id).ToArray());

                nivelParaModificar.Status = WorkflowAprovacaoNivelStatus.Substituido;
                nivelDoCargo.Status       = WorkflowAprovacaoNivelStatus.AguardandoAprovacao;

                await repositorioWorkflowAprovacaoNivel.SalvarAsync(nivelParaModificar);

                nivelDoCargo.Id = await repositorioWorkflowAprovacaoNivel.SalvarAsync(nivelDoCargo);
                await TrataNovoNivel(wfAprovacao, nivelDoCargo, funcionariosCargosDaUe);
            }
        }
Exemplo n.º 27
0
        private async Task TrataCargoDiretor(List <FuncionarioCargoDTO> funcionariosCargosDaUe, WorkflowAprovacao wfAprovacao, WorkflowAprovacaoNivel nivelParaModificar)
        {
            var ad = funcionariosCargosDaUe.FirstOrDefault(a => a.CargoId == (int)Cargo.AD);

            if (ad != null)
            {
                var adicionouNivelAd = await VerificaSeExisteNivelEadiciona(wfAprovacao, nivelParaModificar, Cargo.AD, funcionariosCargosDaUe);

                if (!adicionouNivelAd)
                {
                    await TrataSupervisoresDiretor(funcionariosCargosDaUe, wfAprovacao, nivelParaModificar);
                }
            }
            else
            {
                await TrataSupervisoresDiretor(funcionariosCargosDaUe, wfAprovacao, nivelParaModificar);
            }
        }