private async Task EnviarNotificacaoSme(IEnumerable <Ue> ues, PeriodoFechamentoBimestre periodoFechamentoBimestre, ModalidadeTipoCalendario modalidadeTipoCalendario, int ano) { var titulo = $"UEs que não cadastraram o período de fechamento - {modalidadeTipoCalendario.Name()} {ano}"; var mensagem = new StringBuilder($"As UEs abaixo ainda não cadastraram o período de fechamento para o tipo de calendário - <b>{modalidadeTipoCalendario.Name()} {ano}</b>.<br/><br/>"); var grupoDres = ues.GroupBy(a => a.DreId); mensagem.Append("<ul>"); foreach (var grupoDre in grupoDres) { var dre = grupoDre.First().Dre; mensagem.Append($"<li>{dre.Abreviacao}<ul>"); foreach (var ue in grupoDre) { mensagem.Append($"<li>{ue.TipoEscola.ShortName()} {ue.Nome}</li>"); } mensagem.Append("</ul></li>"); } mensagem.Append("</ul>"); var adminsSme = await ObterUsuariosSme(); if (adminsSme != null && adminsSme.Any()) { await mediator.Send(new EnviarNotificacaoUsuariosCommand(titulo, mensagem.ToString(), NotificacaoCategoria.Aviso, NotificacaoTipo.Calendario, adminsSme)); } }
private async Task NotificarDre(IGrouping <long, Ue> grupoDre, ModalidadeTipoCalendario modalidadeTipoCalendario, int ano) { var dre = grupoDre.First().Dre; var titulo = $"UEs que não cadastraram o período de fechamento - {modalidadeTipoCalendario.Name()} {ano} ({dre.Abreviacao})"; var mensagem = new StringBuilder($"As UEs abaixo ainda não cadastraram o período de fechamento para o tipo de calendário <b>{modalidadeTipoCalendario.Name()} {ano} ({dre.Abreviacao})</b>.<br/>"); mensagem.Append("<ul>"); foreach (var ue in grupoDre) { mensagem.Append($"<li>{ue.TipoEscola.ShortName()} {ue.Nome}</li>"); } mensagem.Append("</ul>"); var adminsDre = await ObterUsuariosDre(dre.CodigoDre); if (adminsDre != null && adminsDre.Any()) { await mediator.Send(new EnviarNotificacaoUsuariosCommand(titulo, mensagem.ToString(), NotificacaoCategoria.Aviso, NotificacaoTipo.Calendario, adminsDre, dre.CodigoDre)); } }
private async Task NotificarUe(Ue ue, ModalidadeTipoCalendario modalidadeTipoCalendario) { var anoAtual = DateTime.Now.Year; var descricaoUe = $"{ue.TipoEscola.ShortName()} {ue.Nome} ({ue.Dre.Abreviacao})"; var titulo = $"Cadastro de período de fechamento pendente {descricaoUe}"; var mensagem = $"O período de fechamento da <b>{descricaoUe}</b> ainda não foi cadastrado para o tipo de calendário <b>{modalidadeTipoCalendario.Name()} {anoAtual}</b>."; await mediator.Send(new EnviarNotificacaoCommand(titulo, mensagem, NotificacaoCategoria.Aviso, NotificacaoTipo.Calendario, ObterCargosGestaoEscola(), ue.Dre.CodigoDre, ue.CodigoUe)); var admins = await ObterUsuariosAdms(ue); if (admins != null && admins.Any()) { await mediator.Send(new EnviarNotificacaoUsuariosCommand(titulo, mensagem, NotificacaoCategoria.Aviso, NotificacaoTipo.Calendario, admins, ue.Dre.CodigoDre, ue.CodigoUe)); } }
private async Task NotificarEscolaAlunosFaltososBimestre(string dreCodigo, string dreNome, string dreAbreviacao, TipoEscola tipoEscola, string ueCodigo, string ueNome, double percentualCritico, int bimestre, int ano, IEnumerable <IGrouping <string, AlunoFaltosoBimestreDto> > turmasAgrupadas, ModalidadeTipoCalendario modalidadeTipoCalendario) { var titulo = $"Alunos com baixa frequência da {tipoEscola.ShortName()} {ueNome} - {modalidadeTipoCalendario.Name()}"; StringBuilder mensagem = new StringBuilder(); mensagem.AppendLine($"<p>Abaixo segue a lista de turmas com alunos que tiveram frequência geral abaixo de <b>{percentualCritico}%</b> no <b>{bimestre}º bimestre</b> de <b>{ano}</b> da <b>{tipoEscola.ShortName()} {ueNome} (DRE {dreAbreviacao})</b>.</p>"); foreach (var turmaAgrupada in turmasAgrupadas) { var alunosDaTurma = await servicoEOL.ObterAlunosPorTurma(turmaAgrupada.Key); var alunosFaltososTurma = alunosDaTurma.Where(c => turmaAgrupada.Any(a => a.AlunoCodigo == c.CodigoAluno)); mensagem.AppendLine($"<p>Turma <b>{turmaAgrupada.First().TurmaModalidade.ShortName()} - {turmaAgrupada.First().TurmaNome}</b></p>"); mensagem.AppendLine("<table style='margin-left: auto; margin-right: auto;' border='2' cellpadding='5'>"); mensagem.AppendLine("<tr>"); mensagem.AppendLine("<td style='padding: 5px;'>Nº</td>"); mensagem.AppendLine("<td style='padding: 5px;'>Nome do aluno</td>"); mensagem.AppendLine("<td style='padding: 5px;'>Percentual de Frequência</td>"); mensagem.AppendLine("</tr>"); foreach (var aluno in alunosFaltososTurma.OrderBy(a => a.NomeAluno)) { var percentualFrequenciaAluno = 100 - turmaAgrupada.FirstOrDefault(c => c.AlunoCodigo == aluno.CodigoAluno).PercentualFaltas; mensagem.AppendLine("<tr>"); mensagem.Append($"<td style='padding: 5px;'>{aluno.NumeroAlunoChamada}</td>"); mensagem.Append($"<td style='padding: 5px;'>{aluno.NomeAluno}</td>"); mensagem.Append($"<td style='text-align: center;'>{percentualFrequenciaAluno:0.00} %</td>"); mensagem.AppendLine("</tr>"); } } var funcionariosEol = servicoNotificacao.ObterFuncionariosPorNivel(ueCodigo, Cargo.Supervisor); var functionariosEolCP = servicoNotificacao.ObterFuncionariosPorNivel(ueCodigo, Cargo.CP); var functionariosEolAD = servicoNotificacao.ObterFuncionariosPorNivel(ueCodigo, Cargo.AD); var functionariosEolDiretor = servicoNotificacao.ObterFuncionariosPorNivel(ueCodigo, Cargo.Diretor); NotficarFuncionariosAlunosFaltososBimestre(funcionariosEol, titulo, mensagem.ToString(), ueCodigo, dreCodigo); NotficarFuncionariosAlunosFaltososBimestre(functionariosEolCP, titulo, mensagem.ToString(), ueCodigo, dreCodigo); NotficarFuncionariosAlunosFaltososBimestre(functionariosEolAD, titulo, mensagem.ToString(), ueCodigo, dreCodigo); NotficarFuncionariosAlunosFaltososBimestre(functionariosEolDiretor, titulo, mensagem.ToString(), ueCodigo, dreCodigo); }