private async Task AtualizarNotasFechamento(IEnumerable <WfAprovacaoNotaFechamento> notasEmAprovacao, string criadoRF, string criadoPor, long workFlowId) { var fechamentoTurmaDisciplinaId = notasEmAprovacao.First().FechamentoNota.FechamentoAluno.FechamentoTurmaDisciplinaId; // Resolve a pendencia de fechamento repositorioPendencia.AtualizarPendencias(fechamentoTurmaDisciplinaId, SituacaoPendencia.Resolvida, TipoPendencia.AlteracaoNotaFechamento); foreach (var notaEmAprovacao in notasEmAprovacao) { var fechamentoNota = notaEmAprovacao.FechamentoNota; if (notaEmAprovacao.Nota.HasValue) { if (notaEmAprovacao.Nota != fechamentoNota.Nota) { await mediator.Send(new SalvarHistoricoNotaFechamentoCommand(fechamentoNota.Nota.Value, notaEmAprovacao.Nota.Value, notaEmAprovacao.FechamentoNotaId, criadoRF, criadoPor, workFlowId)); } fechamentoNota.Nota = notaEmAprovacao.Nota; } else { if (notaEmAprovacao.ConceitoId != fechamentoNota.ConceitoId) { await mediator.Send(new SalvarHistoricoConceitoFechamentoCommand(fechamentoNota.ConceitoId.Value, notaEmAprovacao.ConceitoId.Value, notaEmAprovacao.FechamentoNotaId, criadoRF, criadoPor, workFlowId)); } fechamentoNota.ConceitoId = notaEmAprovacao.ConceitoId; } repositorioFechamentoNota.Salvar(fechamentoNota); } }
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); }