Esempio n. 1
0
        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);
        }