private async Task <ComponenteFrequenciaRegenciaFinal> ObterNotasFrequenciaRegencia(ComponenteCurricularPorTurma disciplina, FrequenciaAluno frequenciaAluno, PeriodoEscolar periodoEscolar, Turma turma, IEnumerable <NotaConceitoBimestreComponente> notasConselhoClasse, IEnumerable <NotaConceitoBimestreComponente> notasFechamento, Usuario usuario) { var percentualFrequencia = frequenciaAluno != null && frequenciaAluno.Id > 0 && frequenciaAluno.TotalAulas > 0 ? frequenciaAluno?.PercentualFrequencia ?? 100 : 100; //Frequência especifica para 2020. if (frequenciaAluno != null && turma.AnoLetivo.Equals(2020)) { percentualFrequencia = frequenciaAluno.PercentualFrequenciaFinal; } var conselhoClasseComponente = new ComponenteFrequenciaRegenciaFinal() { Aulas = frequenciaAluno?.TotalAulas ?? 0, Faltas = frequenciaAluno?.TotalAusencias ?? 0, AusenciasCompensadas = frequenciaAluno?.TotalCompensacoes ?? 0, Frequencia = percentualFrequencia }; var componentesRegencia = await mediator.Send(new ObterComponentesCurricularesRegenciaQuery() { Turma = turma, CdComponenteCurricular = disciplina.CodDisciplina, Usuario = usuario }); foreach (var componenteRegencia in componentesRegencia) { conselhoClasseComponente.ComponentesCurriculares.Add(ObterNotasRegencia(componenteRegencia, periodoEscolar, notasConselhoClasse, notasFechamento, turma)); } return(conselhoClasseComponente); }
public async Task <IEnumerable <GrupoMatrizComponenteComNotaFinal> > Handle(ObterDadosComponenteComNotaFinalQuery request, CancellationToken cancellationToken) { var notasFechamento = await ObterNotasAlunoBimestre(request.FechamentoTurmaId, request.Turma.Codigo, request.CodigoAluno, request.PeriodoEscolar?.Bimestre); var notasConselhoClasse = await ObterNotasConselhoClasseAluno(request.ConselhoClasseId, request.CodigoAluno); var disciplinasPorTurma = await ObterComponentesCurricularesPorTurma(request.Turma.Codigo); var lstComponentesComNota = disciplinasPorTurma.Where(c => c.LancaNota) .GroupBy(c => c.GrupoMatriz?.Nome); var lstGruposMatrizCompNota = new List <GrupoMatrizComponenteComNotaFinal>(); foreach (var grupoDisciplinasMatriz in lstComponentesComNota.OrderBy(k => k.Key)) { var lstCompComNota = new List <ComponenteComNotaFinal>(); ComponenteFrequenciaRegenciaFinal compRegenciaComNota = null; foreach (var disciplina in grupoDisciplinasMatriz) { // Carrega Frequencia Aluno var frequenciaAluno = await mediator.Send(new ObterFrequenciaAlunoQuery() { Turma = request.Turma, CodigoAluno = request.CodigoAluno, ComponenteCurricularCodigo = disciplina.CodDisciplina.ToString(), PeriodoEscolar = request.PeriodoEscolar }); if (disciplina.Regencia) { compRegenciaComNota = await ObterNotasFrequenciaRegencia(disciplina, frequenciaAluno, request.PeriodoEscolar, request.Turma, notasConselhoClasse, notasFechamento, request.Usuario); } else { lstCompComNota.Add(await ObterNotasFrequenciaComponenteComNotaFinal(disciplina, frequenciaAluno, request.PeriodoEscolar, request.Turma, notasConselhoClasse, notasFechamento)); } } var grupoMatriz = new GrupoMatrizComponenteComNotaFinal() { Nome = grupoDisciplinasMatriz.Key, ComponentesComNota = lstCompComNota, ComponentesComNotaRegencia = compRegenciaComNota, TipoNota = await ObterTipoNota(request.PeriodoEscolar, request.Turma) }; lstGruposMatrizCompNota.Add(grupoMatriz); } return(lstGruposMatrizCompNota); }