示例#1
0
        public async Task <PeriodoEscolar> ObterPeriodoEscolarEmAberto(Modalidade modalidadeCodigo, int anoLetivo)
        {
            var dataAtual = DateTime.Today;

            var modalidade = modalidadeCodigo == Modalidade.EJA ? ModalidadeTipoCalendario.EJA : ModalidadeTipoCalendario.FundamentalMedio;

            var tipoCalendario = await consultasTipoCalendario.BuscarPorAnoLetivoEModalidade(anoLetivo, modalidade, dataAtual.Semestre());

            return(await ObterPeriodoEscolarPorData(tipoCalendario.Id, dataAtual));
        }
示例#2
0
        private async Task <PeriodoEscolar> ObterPeriodoEscolar(Turma turma, int semestre)
        {
            var tipoCalendario = await consultasTipoCalendario.BuscarPorAnoLetivoEModalidade(turma.AnoLetivo, turma.ModalidadeTipoCalendario, turma.Semestre);

            if (tipoCalendario == null)
            {
                throw new NegocioException("Tipo de Calendario não localizado para a turma!");
            }

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

            if (periodosEscolares == null || !periodosEscolares.Any())
            {
                throw new NegocioException("Não localizados periodos escolares para o calendario da turma!");
            }

            var periodoAtual = periodosEscolares.FirstOrDefault(c => c.Bimestre == semestre * 2);

            if (periodoAtual == null)
            {
                throw new NegocioException($"Não localizado periodo escolar para o semestre {semestre}!");
            }

            return(periodoAtual);
        }
        private PeriodoEscolarDto BuscaPeriodo(int anoLetivo, Modalidade modalidadeCodigo, int bimestre, int semestre)
        {
            var tipoCalendario = consultasTipoCalendario.BuscarPorAnoLetivoEModalidade(anoLetivo, modalidadeCodigo == Modalidade.EJA ? ModalidadeTipoCalendario.EJA : ModalidadeTipoCalendario.FundamentalMedio);
            var periodo        = consultasPeriodoEscolar.ObterPorTipoCalendario(tipoCalendario.Id).Periodos.FirstOrDefault(p => p.Bimestre == bimestre);

            // TODO alterar verificação para checagem de periodo de fechamento e reabertura do fechamento depois de implementado
            if (DateTime.Now < periodo.PeriodoInicio || DateTime.Now > periodo.PeriodoFim)
            {
                throw new NegocioException($"Período do {bimestre}º Bimestre não está aberto");
            }

            return(periodo);
        }
示例#4
0
        public async Task <IEnumerable <DataAulasProfessorDto> > ObterDatasDeAulasPorCalendarioTurmaEDisciplina(int anoLetivo, string turmaCodigo, string disciplinaCodigo)
        {
            var usuarioLogado = await servicoUsuario.ObterUsuarioLogado();

            var usuarioRF = usuarioLogado.EhProfessor() && !usuarioLogado.EhProfessorInfantil() ? usuarioLogado.CodigoRf : string.Empty;

            var turma = await repositorioTurma.ObterPorCodigo(turmaCodigo);

            if (turma == null)
            {
                throw new NegocioException("Turma não encontrada");
            }

            var tipoCalendario = await consultasTipoCalendario.BuscarPorAnoLetivoEModalidade(anoLetivo, turma.ModalidadeTipoCalendario, turma.Semestre);

            if (tipoCalendario == null)
            {
                throw new NegocioException("Tipo de calendário não existe para turma selecionada");
            }

            var periodosEscolares = await consultasPeriodoEscolar.ObterPorTipoCalendario(tipoCalendario.Id);

            return(await ObterAulasNosPeriodos(periodosEscolares, anoLetivo, turmaCodigo, disciplinaCodigo, usuarioLogado, usuarioRF));
        }