private void EnviaNotificacaoParaDre(long dreId, IEnumerable <PeriodoFechamentoBimestre> fechamentosBimestre) { var dre = repositorioDre.ObterPorId(dreId); if (dre != null) { try { Notificacao notificacao = MontaNotificacao(dre.Nome, "SME", fechamentosBimestre, null, dre.CodigoDre); var adminsSgpDre = servicoEol.ObterAdministradoresSGPParaNotificar(dre.CodigoDre).Result; if (adminsSgpDre != null && adminsSgpDre.Any()) { foreach (var adminSgpUe in adminsSgpDre) { var usuario = servicoUsuario.ObterUsuarioPorCodigoRfLoginOuAdiciona(adminSgpUe); notificacao.UsuarioId = usuario.Id; servicoNotificacao.Salvar(notificacao); } } } catch (Exception) { throw; } } }
public async Task <int> ValidarAulasReposicaoPendente(long fechamentoId, Turma turma, long disciplinaId, DateTime inicioPeriodo, DateTime fimPeriodo) { var aulasPendentes = repositorioAula.ObterAulasReposicaoPendentes(turma.CodigoTurma, disciplinaId.ToString(), inicioPeriodo, fimPeriodo); if (aulasPendentes != null && aulasPendentes.Any()) { var componenteCurricular = (await repositorioComponenteCurricular.ObterDisciplinasPorIds(new long[] { disciplinaId })).ToList()?.FirstOrDefault(); if (componenteCurricular == null) { throw new NegocioException("Componente curricular não encontrado."); } var mensagem = new StringBuilder($"A aulas de reposição de {componenteCurricular.Nome} da turma {turma.Nome} a seguir estão pendentes de aprovação:<br>"); foreach (var aula in aulasPendentes.OrderBy(a => a.DataAula)) { var professor = servicoUsuario.ObterUsuarioPorCodigoRfLoginOuAdiciona(aula.ProfessorRf); if (professor == null) { throw new NegocioException($"Professor com RF {aula.ProfessorRf} não encontrado."); } mensagem.AppendLine($"Professor { aula.ProfessorRf} - { professor.Nome}, dia {aula.DataAula.ToString("dd/MM/yyyy")}.<br>"); } var professorRf = aulasPendentes.First().ProfessorRf; await GerarPendencia(fechamentoId, TipoPendencia.AulasReposicaoPendenteAprovacao, mensagem.ToString(), professorRf); } else { repositorioPendencia.AtualizarPendencias(fechamentoId, SituacaoPendencia.Resolvida, TipoPendencia.AulasReposicaoPendenteAprovacao); } aulasReposicaoPendentes = aulasPendentes.Count(); return(aulasReposicaoPendentes); }
private void EnviaNotificacaoParaDre(IEnumerable <PeriodoFechamentoBimestre> fechamentosBimestre) { var dres = repositorioDre.ObterTodas(); if (dres != null && dres.Any()) { foreach (var dre in dres) { Notificacao notificacao = MontaNotificacao(dre.Nome, "SME", fechamentosBimestre, null, dre.CodigoDre); var adminsSgpDre = servicoEol.ObterAdministradoresSGPParaNotificar(dre.CodigoDre).Result; if (adminsSgpDre != null && adminsSgpDre.Any()) { foreach (var adminSgpUe in adminsSgpDre) { var rf = ""; if (long.TryParse(adminSgpUe, out long rfLong)) { rf = adminSgpUe; } var usuario = servicoUsuario.ObterUsuarioPorCodigoRfLoginOuAdiciona(rf, adminSgpUe); notificacao.UsuarioId = usuario.Id; servicoNotificacao.Salvar(notificacao); } } } } }
public async Task AlterarSenha(AlterarSenhaDto alterarSenhaDto) { var login = servicoUsuario.ObterLoginAtual(); var usuario = servicoUsuario.ObterUsuarioPorCodigoRfLoginOuAdiciona(null, login); if (usuario == null) { throw new NegocioException("Usuário não encontrado."); } usuario.ValidarSenha(alterarSenhaDto.NovaSenha); await servicoAutenticacao.AlterarSenha(login, alterarSenhaDto.SenhaAtual, alterarSenhaDto.NovaSenha); }
private IEnumerable <Usuario> CarregaUsuariosPorRFs(IEnumerable <UsuarioEolRetornoDto> listaCPsUe) { foreach (var cpUe in listaCPsUe) { yield return(servicoUsuario.ObterUsuarioPorCodigoRfLoginOuAdiciona(cpUe.CodigoRf)); } }
private void TrataUsuario(Notificacao notificacao, string usuarioRf) { var usuario = servicoUsuario.ObterUsuarioPorCodigoRfLoginOuAdiciona(usuarioRf); notificacao.Usuario = usuario; notificacao.UsuarioId = usuario.Id; }
private 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; 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(servicoUsuario.ObterUsuarioPorCodigoRfLoginOuAdiciona(usuarioRf)); } } workflowAprovacao.Adicionar(workflowNivel); } return(workflowAprovacao); }
public void GerarNotificacaoAlteracaoLimiteDias(Turma turma, Usuario usuarioLogado, Ue ue, int bimestre, string alunosComNotaAlterada) { var dataAtual = DateTime.Now; var mensagem = $"<p>A(s) nota(s)/conceito(s) final(is) da turma {turma.Nome} da {ue.Nome} (DRE {ue.Dre.Nome}) no bimestre {bimestre} de {turma.AnoLetivo} foram alterados pelo Professor " + $"{usuarioLogado.Nome} ({usuarioLogado.CodigoRf}) em {dataAtual.ToString("dd/MM/yyyy")} às {dataAtual.ToString("HH:mm")} para o(s) seguinte(s) aluno(s):</p><br/>{alunosComNotaAlterada} "; var listaCPs = servicoEOL.ObterFuncionariosPorCargoUe(turma.Ue.CodigoUe, (long)Cargo.CP); var listaDiretores = servicoEOL.ObterFuncionariosPorCargoUe(turma.Ue.CodigoUe, (long)Cargo.Diretor); var listaSupervisores = consultasSupervisor.ObterPorUe(turma.Ue.CodigoUe); var usuariosNotificacao = new List <UsuarioEolRetornoDto>(); if (listaCPs != null) { usuariosNotificacao.AddRange(listaCPs); } if (listaDiretores != null) { usuariosNotificacao.AddRange(listaDiretores); } if (listaSupervisores != null) { usuariosNotificacao.Add(new UsuarioEolRetornoDto() { CodigoRf = listaSupervisores.SupervisorId, NomeServidor = listaSupervisores.SupervisorNome }); } foreach (var usuarioNotificacaoo in usuariosNotificacao) { var usuario = servicoUsuario.ObterUsuarioPorCodigoRfLoginOuAdiciona(usuarioNotificacaoo.CodigoRf); var notificacao = new Notificacao() { Ano = turma.AnoLetivo, Categoria = NotificacaoCategoria.Alerta, DreId = ue.Dre.Id.ToString(), Mensagem = mensagem, UsuarioId = usuario.Id, Tipo = NotificacaoTipo.Notas, Titulo = $"Alteração em nota/conceito final - Turma {turma.Nome}", TurmaId = turma.Id.ToString(), UeId = turma.UeId.ToString(), }; servicoNotificacao.Salvar(notificacao); } }
private IEnumerable <Usuario> BuscaProfessorAula(RegistroAulaPrevistaDivergenteDto turma) { // Buscar professor da ultima aula var usuario = servicoUsuario.ObterUsuarioPorCodigoRfLoginOuAdiciona(turma.ProfessorRf); return(usuario != null ? new List <Usuario>() { usuario } : null); }
private IEnumerable <(Cargo?Cargo, Usuario Usuario)> BuscaGestoresUe(string codigoUe) { // Buscar gestor da Ue var funcionariosRetornoEol = servicoNotificacao.ObterFuncionariosPorNivel(codigoUe, Cargo.CP); if (funcionariosRetornoEol == null) { return(null); } var cargoNotificacao = funcionariosRetornoEol.GroupBy(f => f.Cargo).Select(f => f.Key).First(); Cargo?proximoNivel = null; if (cargoNotificacao == Cargo.CP || cargoNotificacao == Cargo.AD) { proximoNivel = Cargo.Diretor; } else { proximoNivel = servicoNotificacao.ObterProximoNivel(cargoNotificacao, false); } if (proximoNivel != null) { funcionariosRetornoEol = funcionariosRetornoEol.Concat(servicoNotificacao.ObterFuncionariosPorNivel(codigoUe, proximoNivel)); } else { return(null); } var usuarios = new List <(Cargo?, Usuario)>(); foreach (var usuarioEol in funcionariosRetornoEol) { usuarios.Add((usuarioEol.Cargo, servicoUsuario.ObterUsuarioPorCodigoRfLoginOuAdiciona(usuarioEol.Id))); } return(usuarios); }
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 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); } } }