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 <bool> TurmaEmPeriodoDeFechamento(string turmaCodigo, DateTime dataReferencia, int bimestre = 0) { var turma = await repositorioTurma.ObterTurmaComUeEDrePorCodigo(turmaCodigo); var tipoCalendario = await consultasTipoCalendario.ObterPorTurma(turma); return(await TurmaEmPeriodoDeFechamento(turma, tipoCalendario, dataReferencia, bimestre)); }
public async Task <bool> TurmaEmPeriodoAberto(Turma turma, DateTime dataReferencia, int bimestre = 0, bool ehAnoLetivo = false, TipoCalendario tipoCalendario = null) { if (tipoCalendario == null) { tipoCalendario = await consultasTipoCalendario.ObterPorTurma(turma); if (tipoCalendario == null) { throw new NegocioException($"Tipo de calendário para turma {turma.CodigoTurma} não localizado!"); } } var periodoEmAberto = await consultasTipoCalendario.PeriodoEmAberto(tipoCalendario, dataReferencia, bimestre, ehAnoLetivo); return(periodoEmAberto || await consultasPeriodoFechamento.TurmaEmPeriodoDeFechamento(turma, tipoCalendario, dataReferencia, bimestre)); }