예제 #1
0
        public async Task <FrequenciaAluno> ObterFrequenciaGeralAlunoPorTurmaEComponente(string alunoCodigo, string turmaCodigo, string componenteCurricularCodigo = "")
        {
            var frequenciaAlunoPeriodos = await repositorioFrequenciaAlunoDisciplinaPeriodo.ObterFrequenciaGeralAluno(alunoCodigo, turmaCodigo, componenteCurricularCodigo);

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

            var frequenciaAluno = new FrequenciaAluno()
            {
                TotalAulas        = frequenciaAlunoPeriodos.Sum(f => f.TotalAulas),
                TotalAusencias    = frequenciaAlunoPeriodos.Sum(f => f.TotalAusencias),
                TotalCompensacoes = frequenciaAlunoPeriodos.Sum(f => f.TotalCompensacoes),
            };

            var turma = await repositorioTurma.ObterPorCodigo(turmaCodigo);

            var tipoCalendario = await consultasTipoCalendario.ObterPorTurma(turma);

            var periodos = await consultasPeriodoEscolar.ObterPeriodosEscolares(tipoCalendario.Id);

            periodos.ToList().ForEach(p =>
            {
                var frequenciaCorrespondente = frequenciaAlunoPeriodos.SingleOrDefault(f => f.Bimestre == p.Bimestre);
                frequenciaAluno.AdicionarFrequenciaBimestre(p.Bimestre, frequenciaCorrespondente != null ? frequenciaCorrespondente.PercentualFrequencia : 100);
            });

            return(frequenciaAluno);
        }
예제 #2
0
        public async Task <double> ObterFrequenciaGeralAluno(string alunoCodigo, string turmaCodigo, string componenteCurricularCodigo = "")
        {
            var frequenciaAlunoPeriodos = await repositorioFrequenciaAlunoDisciplinaPeriodo.ObterFrequenciaGeralAluno(alunoCodigo, turmaCodigo, componenteCurricularCodigo);

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

            var frequenciaAluno = new FrequenciaAluno()
            {
                TotalAulas        = frequenciaAlunoPeriodos.Sum(f => f.TotalAulas),
                TotalAusencias    = frequenciaAlunoPeriodos.Sum(f => f.TotalAusencias),
                TotalCompensacoes = frequenciaAlunoPeriodos.Sum(f => f.TotalCompensacoes),
            };

            var turma = await repositorioTurma.ObterPorCodigo(turmaCodigo);

            //Particularidade de 2020
            if (turma.AnoLetivo.Equals(2020))
            {
                return(await CalculoFrequenciaGlobal2020(alunoCodigo, turma));
            }

            return(frequenciaAluno.PercentualFrequencia);
        }
예제 #3
0
        private string ObterFrequenciaFinalAluno(IEnumerable <FrequenciaAluno> frequencias)
        {
            if (frequencias == null || !frequencias.Any())
            {
                return(FREQUENCIA_100);
            }
            else if (frequencias.FirstOrDefault(nf => nf.PeriodoEscolarId == null) != null)
            {
                return(frequencias.FirstOrDefault(nf => nf.PeriodoEscolarId == null).PercentualFrequencia.ToString());
            }
            else
            {
                var turma = mediator.Send(new ObterTurmaQuery(frequencias.First().TurmaId)).Result;

                var frequenciaFinal = new FrequenciaAluno()
                {
                    TotalAulas        = frequencias.Sum(f => f.TotalAulas),
                    TotalAusencias    = frequencias.Sum(f => f.TotalAusencias),
                    TotalCompensacoes = frequencias.Sum(f => f.TotalCompensacoes)
                };

                //Particularidade de cálculo de frequência para 2020.
                if (turma.AnoLetivo.Equals(2020))
                {
                    var idTipoCalendario = tipoCalendarioRepository.ObterPorAnoLetivoEModalidade(turma.AnoLetivo, turma.ModalidadeTipoCalendario).Result;
                    var periodos         = mediator.Send(new ObterPeriodosEscolaresPorTipoCalendarioQuery(idTipoCalendario)).Result;

                    periodos.ToList().ForEach(p =>
                    {
                        var frequencia = frequencias.SingleOrDefault(f => f.Bimestre.Equals(p.Bimestre));
                        frequenciaFinal.AdicionarFrequenciaBimestre(p.Bimestre, frequencia != null ? frequencia.PercentualFrequencia : 100);
                    });

                    return(frequenciaFinal.PercentualFrequenciaFinal.ToString());
                }

                return(frequenciaFinal.PercentualFrequencia.ToString());
            }
        }
예제 #4
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);
        }
예제 #5
0
        private async Task <ComponenteComNotaFinal> ObterNotasFrequenciaComponenteComNotaFinal(ComponenteCurricularPorTurma disciplina, FrequenciaAluno frequenciaAluno, PeriodoEscolar periodoEscolar, Turma turma, IEnumerable <NotaConceitoBimestreComponente> notasConselhoClasseAluno, IEnumerable <NotaConceitoBimestreComponente> notasFechamentoAluno)
        {
            var percentualFrequencia = frequenciaAluno != null && frequenciaAluno.Id > 0 && frequenciaAluno.TotalAulas > 0 ? frequenciaAluno?.PercentualFrequencia ?? 100 : 100;

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

            var notasComponente = ObterNotasComponente(disciplina, periodoEscolar, notasFechamentoAluno);

            var conselhoClasseComponente = new ComponenteComNotaFinal()
            {
                EhEja                 = turma.EhEja,
                Componente            = disciplina.Disciplina,
                Faltas                = frequenciaAluno?.TotalAusencias ?? 0,
                AusenciasCompensadas  = frequenciaAluno?.TotalCompensacoes ?? 0,
                Frequencia            = percentualFrequencia,
                NotaConceitoBimestre1 = notasComponente.FirstOrDefault(n => n.Bimestre == 1)?.NotaConceito,
                NotaConceitoBimestre2 = notasComponente.FirstOrDefault(n => n.Bimestre == 2)?.NotaConceito,
                NotaConceitoBimestre3 = notasComponente.FirstOrDefault(n => n.Bimestre == 3)?.NotaConceito,
                NotaConceitoBimestre4 = notasComponente.FirstOrDefault(n => n.Bimestre == 4)?.NotaConceito,
                NotaFinal             = ObterNotaPosConselho(disciplina, periodoEscolar?.Bimestre, notasConselhoClasseAluno, notasFechamentoAluno)
            };

            return(conselhoClasseComponente);
        }
예제 #6
0
        private async Task <ComponenteComNotaBimestre> ObterNotasFrequenciaComponenteComNotaBimestre(ComponenteCurricularPorTurma disciplina, FrequenciaAluno frequenciaAluno, PeriodoEscolar periodoEscolar, Turma turma, IEnumerable <NotaConceitoBimestreComponente> notasConselhoClasseAluno, IEnumerable <NotaConceitoBimestreComponente> notasFechamentoAluno)
        {
            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 ComponenteComNotaBimestre()
            {
                Componente           = disciplina.Disciplina,
                EhEja                = turma.EhEja,
                Aulas                = frequenciaAluno?.TotalAulas ?? 0,
                Faltas               = frequenciaAluno?.TotalAusencias ?? 0,
                AusenciasCompensadas = frequenciaAluno?.TotalCompensacoes ?? 0,
                Frequencia           = percentualFrequencia,
                NotaConceito         = ObterNotasComponente(disciplina, periodoEscolar, notasFechamentoAluno).FirstOrDefault()?.NotaConceito,
                NotaPosConselho      = ObterNotaPosConselho(disciplina, periodoEscolar?.Bimestre, notasConselhoClasseAluno, notasFechamentoAluno)
            };

            return(conselhoClasseComponente);
        }