private void EnviaNotificacaoParaUe(IEnumerable <PeriodoFechamentoBimestre> fechamentosBimestre, long dreId) { var ues = repositorioUe.ObterPorDre(dreId); if (ues != null && ues.Any()) { foreach (var ue in ues) { Notificacao notificacao = MontaNotificacao(ue.Nome, "DRE", fechamentosBimestre, null, ue.CodigoUe); var diretores = servicoEol.ObterFuncionariosPorCargoUe(ue.CodigoUe, (long)Cargo.Diretor); if (diretores == null || !diretores.Any()) { throw new NegocioException($"Não foram localizados diretores para Ue {ue.CodigoUe}."); } foreach (var diretor in diretores) { var usuario = servicoUsuario.ObterUsuarioPorCodigoRfLoginOuAdiciona(diretor.CodigoRf); notificacao.UsuarioId = usuario.Id; servicoNotificacao.Salvar(notificacao); } } } }
private void NotificarDiretorUeFechamentoReaberturaAprovado(FechamentoReabertura fechamentoReabertura, long codigoDaNotificacao, long nivelId) { var diretoresDaEscola = servicoEOL.ObterFuncionariosPorCargoUe(fechamentoReabertura.Ue.CodigoUe, (long)Cargo.Diretor); if (diretoresDaEscola == null && !diretoresDaEscola.Any()) { throw new NegocioException("Não foi possível localizar o diretor da Ue desta reabertura de fechamento."); } foreach (var diretorDaEscola in diretoresDaEscola) { var usuario = servicoUsuario.ObterUsuarioPorCodigoRfLoginOuAdiciona(diretorDaEscola.CodigoRf); var notificacao = new Notificacao() { UeId = fechamentoReabertura.Ue.CodigoUe, UsuarioId = usuario.Id, Ano = fechamentoReabertura.CriadoEm.Year, Categoria = NotificacaoCategoria.Aviso, DreId = fechamentoReabertura.Dre.CodigoDre, Titulo = "Cadastro de período de reabertura de fechamento - ano anterior", Tipo = NotificacaoTipo.Calendario, Codigo = codigoDaNotificacao, Mensagem = $@"O período de reabertura do fechamento de bimestre abaixo da {fechamentoReabertura.Ue.Nome} ({fechamentoReabertura.Dre.Nome}) foi aprovado pela supervisão escolar. <br /> Descrição: { fechamentoReabertura.Descricao} < br /> Início: { fechamentoReabertura.Inicio.ToString("dd/MM/yyyy")} < br /> Fim: { fechamentoReabertura.Fim.ToString("dd/MM/yyyy")} < br /> Bimestres: { fechamentoReabertura.ObterBimestresNumeral()}" }; repositorioNotificacao.Salvar(notificacao); repositorioWorkflowAprovacaoNivelNotificacao.Salvar(new WorkflowAprovacaoNivelNotificacao() { NotificacaoId = notificacao.Id, WorkflowAprovacaoNivelId = nivelId }); } }
public IEnumerable <(Cargo?Cargo, string Id)> ObterFuncionariosPorNivel(string codigoUe, Cargo?cargo, bool primeiroNivel = true) { IEnumerable <SupervisorEscolasDreDto> supervisoresEscola = null; IEnumerable <UsuarioEolRetornoDto> funcionarios = null; if (cargo == Cargo.Supervisor) { supervisoresEscola = repositorioSupervisorEscolaDre.ObtemSupervisoresPorUe(codigoUe); } else { funcionarios = servicoEOL.ObterFuncionariosPorCargoUe(codigoUe, (int)cargo); } if ((cargo == Cargo.Supervisor && (supervisoresEscola == null || !supervisoresEscola.Any())) || (funcionarios == null || !funcionarios.Any())) { Cargo?cargoProximoNivel = ObterProximoNivel(cargo, primeiroNivel); if (!cargoProximoNivel.HasValue) { return(null); } return(ObterFuncionariosPorNivel(codigoUe, cargoProximoNivel, false)); } else { if (cargo == Cargo.Supervisor) { return(supervisoresEscola.Select(s => (Cargo: cargo, Id: s.SupervisorId))); } else { return(funcionarios.Select(f => (Cargo: cargo, Id: f.CodigoRf))); } } }
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); } } }