public async Task <PlanoAulaRetornoDto> ObterPlanoAulaPorAula(long aulaId)
        {
            if (!await VerificarPlanoAnualExistente(aulaId))
            {
                throw new NegocioException("Não foi possível carregar o plano de aula porque não há plano anual cadastrado");
            }
            PlanoAulaRetornoDto planoAulaDto = new PlanoAulaRetornoDto();
            // Busca plano de aula por data e disciplina da aula
            var plano = await repositorio.ObterPlanoAulaPorAula(aulaId);

            var aulaDto = await consultasAula.BuscarPorId(aulaId);

            var atividadeAvaliativa = await repositorioAtividadeAvaliativa.ObterAtividadeAvaliativa(aulaDto.DataAula.Date, aulaDto.DisciplinaId, aulaDto.TurmaId, aulaDto.UeId);

            if (plano != null)
            {
                planoAulaDto = MapearParaDto(plano) ?? new PlanoAulaRetornoDto();

                // Carrega objetivos aprendizagem Jurema
                var planoAnual = await consultasPlanoAnual.ObterPorEscolaTurmaAnoEBimestre(new FiltroPlanoAnualDto()
                {
                    AnoLetivo = aulaDto.DataAula.Year,
                    Bimestre  = (aulaDto.DataAula.Month + 2) / 3,
                    ComponenteCurricularEolId = long.Parse(aulaDto.DisciplinaId),
                    EscolaId = aulaDto.UeId,
                    TurmaId  = aulaDto.TurmaId
                }, seNaoExistirRetornaNovo : false);

                // Carrega objetivos já cadastrados no plano de aula
                var objetivosAula = await consultasObjetivosAula.ObterObjetivosPlanoAula(plano.Id);

                if (planoAnual != null)
                {
                    // Filtra objetivos anual com os objetivos da aula
                    planoAulaDto.ObjetivosAprendizagemAula = planoAnual.ObjetivosAprendizagem
                                                             .Where(c => objetivosAula.Any(a => a.ObjetivoAprendizagemPlano.ObjetivoAprendizagemJuremaId == c.Id))
                                                             .ToList();
                }
            }
            var periodoEscolar = consultasPeriodoEscolar.ObterPorTipoCalendario(aulaDto.TipoCalendarioId);
            var periodo        = periodoEscolar.Periodos.FirstOrDefault(p => p.PeriodoInicio <= aulaDto.DataAula && p.PeriodoFim >= aulaDto.DataAula);
            var planoAnualId   = await consultasPlanoAnual.ObterIdPlanoAnualPorAnoEscolaBimestreETurma(
                aulaDto.DataAula.Year, aulaDto.UeId, long.Parse(aulaDto.TurmaId), periodo.Bimestre, long.Parse(aulaDto.DisciplinaId));

            // Carrega informações da aula para o retorno
            planoAulaDto.PossuiPlanoAnual      = planoAnualId > 0;
            planoAulaDto.AulaId                = aulaDto.Id;
            planoAulaDto.QtdAulas              = aulaDto.Quantidade;
            planoAulaDto.IdAtividadeAvaliativa = atividadeAvaliativa?.Id;
            planoAulaDto.PodeLancarNota        = planoAulaDto.IdAtividadeAvaliativa.HasValue && aulaDto.DataAula.Date <= DateTime.Now.Date;
            return(planoAulaDto);
        }
Esempio n. 2
0
 public async Task <IActionResult> Obter(FiltroPlanoAnualDto filtroPlanoAnualDto, [FromServices] IConsultasPlanoAnual consultasPlanoAnual)
 {
     return(Ok(await consultasPlanoAnual.ObterPorEscolaTurmaAnoEBimestre(filtroPlanoAnualDto)));
 }