public async Task <Grade> ObterGradeTurma(TipoEscola tipoEscola, Modalidade modalidade, int duracao) { string query = @"select f.id as FiltroId, g.Id as GradeId, g.* from grade_filtro f inner join grade g on g.id = f.grade_id where f.tipo_escola = @tipoEscola and f.modalidade = @modalidade and f.duracao_turno = @duracao"; var filtro = await database.Conexao.QueryAsync <GradeFiltro, Grade, Grade>(query, (gradeFiltro, grade) => { return(grade); }, new { tipoEscola, modalidade, duracao }, splitOn : "FiltroId, GradeId"); return(filtro.FirstOrDefault()); }
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); }
public async Task <GradeDto> ObterGradeTurma(TipoEscola tipoEscola, Modalidade modalidade, int duracao) { return(MapearParaDto(await repositorioGrade.ObterGradeTurma(tipoEscola, modalidade, duracao))); }
public ObterGradePorTipoEscolaModalidadeDuracaoQuery(TipoEscola tipoEscola, Modalidade modalidade, int duracao) { TipoEscola = tipoEscola; Modalidade = modalidade; Duracao = duracao; }