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); }
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); }
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()); } }
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); }
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); }
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); }