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