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); }
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 }); }
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 }); } }
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); } } }