示例#1
0
        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);
        }
示例#2
0
        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);
        }