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