Exemplo n.º 1
0
        private async Task <ComponenteFrequenciaRegenciaBimestre> ObterNotasFrequenciaRegencia(ComponenteCurricularPorTurma disciplina, FrequenciaAluno frequenciaAluno, PeriodoEscolar periodoEscolar, Turma turma, IEnumerable <NotaConceitoBimestreComponente> notasConselhoClasse, IEnumerable <NotaConceitoBimestreComponente> notasFechamento, Usuario usuario)
        {
            var componentesRegencia = await mediator.Send(new ObterComponentesCurricularesRegenciaQuery()
            {
                Turma = turma,
                CdComponenteCurricular = disciplina.CodDisciplina,
                Usuario = usuario
            });

            if (componentesRegencia == null || !componentesRegencia.Any())
            {
                return(null);
            }

            var percentualFrequencia = frequenciaAluno?.TotalAulas > 0 ? frequenciaAluno?.PercentualFrequencia ?? 100 : 100;

            if (frequenciaAluno != null && periodoEscolar != null && turma.AnoLetivo.Equals(2020))
            {
                frequenciaAluno.AdicionarFrequenciaBimestre(periodoEscolar.Bimestre, percentualFrequencia);
                percentualFrequencia = frequenciaAluno.PercentualFrequenciaFinal;
            }

            var conselhoClasseComponente = new ComponenteFrequenciaRegenciaBimestre()
            {
                Aulas  = frequenciaAluno?.TotalAulas ?? 0,
                Faltas = frequenciaAluno?.TotalAusencias ?? 0,
                AusenciasCompensadas = frequenciaAluno?.TotalCompensacoes ?? 0,
                Frequencia           = percentualFrequencia
            };

            foreach (var componenteRegencia in componentesRegencia)
            {
                conselhoClasseComponente.ComponentesCurriculares.Add(ObterNotasRegencia(componenteRegencia, periodoEscolar, notasConselhoClasse, notasFechamento, turma));
            }

            return(conselhoClasseComponente);
        }
Exemplo n.º 2
0
        public async Task <IEnumerable <GrupoMatrizComponenteComNotaBimestre> > Handle(ObterDadosComponenteComNotaBimestreQuery 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 <GrupoMatrizComponenteComNotaBimestre>();

            foreach (var grupoDisciplinasMatriz in lstComponentesComNota.OrderBy(k => k.Key))
            {
                var lstCompComNota = new List <ComponenteComNotaBimestre>();
                ComponenteFrequenciaRegenciaBimestre 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 ObterNotasFrequenciaComponenteComNotaBimestre(disciplina,
                                                                                               frequenciaAluno,
                                                                                               request.PeriodoEscolar,
                                                                                               request.Turma,
                                                                                               notasConselhoClasse,
                                                                                               notasFechamento));
                    }
                }

                var grupoMatriz = new GrupoMatrizComponenteComNotaBimestre()
                {
                    Nome = grupoDisciplinasMatriz.Key,
                    ComponentesComNota        = lstCompComNota,
                    ComponenteComNotaRegencia = compRegenciaComNota,
                    TipoNota = await ObterTipoNota(request.PeriodoEscolar, request.Turma)
                };

                lstGruposMatrizCompNota.Add(grupoMatriz);
            }

            return(lstGruposMatrizCompNota.AsEnumerable());
        }