예제 #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 <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));
        }
예제 #3
0
        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));
        }