Ejemplo n.º 1
0
        public async Task <IEnumerable <ObjetivosAprendizagemPorComponenteDto> > ObterObjetivosPorComponenteNoPlano(int bimestre, long turmaId, long componenteCurricularId, long disciplinaId, bool ehRegencia = false)
        {
            var query = new StringBuilder(@"select cc.id, oa.*
             from planejamento_anual pa
            inner join planejamento_anual_periodo_escolar ppe on ppe.planejamento_anual_id = pa.id
            inner join periodo_escolar pe on pe.id = ppe.periodo_escolar_id
            inner join planejamento_anual_componente pc on pc.planejamento_anual_periodo_escolar_id = ppe.id
            inner join componente_curricular cc on cc.id = pc.componente_curricular_id
            inner join planejamento_anual_objetivos_aprendizagem po on po.planejamento_anual_componente_id = pc.id
            inner join objetivo_aprendizagem oa on oa.Id = po.objetivo_aprendizagem_id
            where pa.turma_id = @turmaId
              and pe.bimestre = @bimestre
              and pa.componente_curricular_id = @componenteCurricularId
              and pa.excluido = false
              and pc.excluido = false
              and po.excluido = false
              and ppe.excluido = false");

            if (ehRegencia)
            {
                query.AppendLine(" and cc.id = @disciplinaId");
            }

            query.AppendLine(" order by oa.codigo");
            var lookup = new Dictionary <long, ObjetivosAprendizagemPorComponenteDto>();


            await database.Conexao.QueryAsync <long, ObjetivoAprendizagem, long>(query.ToString(), (componenteId, objetivoAprendizagem) =>
            {
                ObjetivosAprendizagemPorComponenteDto retorno = null;
                if (!lookup.TryGetValue(componenteId, out retorno))
                {
                    retorno = new ObjetivosAprendizagemPorComponenteDto();
                    retorno.ComponenteCurricularId = componenteId;
                    lookup.Add(componenteId, retorno);
                }

                retorno.ObjetivosAprendizagem.Add(new ObjetivoAprendizagemDto()
                {
                    Id     = objetivoAprendizagem.Id,
                    Ano    = objetivoAprendizagem.Ano.ToString(),
                    Codigo = objetivoAprendizagem.Codigo,
                    IdComponenteCurricular = objetivoAprendizagem.ComponenteCurricularId,
                    Descricao = objetivoAprendizagem.Descricao
                });

                return(componenteId);
            }
                                                                                 , new { bimestre, componenteCurricularId, turmaId, disciplinaId });

            return(lookup.Values);
        }
        public async Task <PlanoAulaObjetivosAprendizagemDto> ObterPlanoAulaEObjetivosAprendizagem(long aulaId)
        {
            var query = @"select
                           pa.id, pa.descricao, pa.desenvolvimento_aula as DesenvolvimentoAula, pa.recuperacao_aula as RecuperacaoAula, pa.licao_casa as LicaoCasa, pa.migrado,
                           pa.criado_em as CriadoEm, pa.alterado_em as AlteradoEm, pa.criado_por as CriadoPor, pa.alterado_por as AlteradoPor, pa.criado_rf as CriadoRf, pa.alterado_rf as AlteradoRf,
                           a.id as AulaId, a.ue_id as UeId, a.disciplina_id as DisciplinaId, a.turma_id as TurmaId,
                           a.quantidade, a.tipo_calendario_id as TipoCalendarioId, a.data_aula as DataAula,
                           oaa.componente_curricular_id as id,
                           oa.id, oa.descricao, oa.codigo, oa.ano_turma as Ano, oa.componente_curricular_id as IdComponenteCurricular
                      from aula a
                      inner join plano_aula pa on a.id = pa.aula_id
                      left join objetivo_aprendizagem_aula oaa on pa.id = oaa.plano_aula_id
                      left join objetivo_aprendizagem oa on oaa.objetivo_aprendizagem_id = oa.id
                     where a.id = @aulaId";

            var lookup = new Dictionary <long, PlanoAulaObjetivosAprendizagemDto>();

            await database.Conexao.QueryAsync <PlanoAulaObjetivosAprendizagemDto, long?, ObjetivoAprendizagemDto, PlanoAulaObjetivosAprendizagemDto>(query, (planoAulaObjetivosAprendizagemDto, componenteId, objetivoAprendizagemDto) =>
            {
                var retorno = new PlanoAulaObjetivosAprendizagemDto();
                if (!lookup.TryGetValue(planoAulaObjetivosAprendizagemDto.Id, out retorno))
                {
                    retorno = planoAulaObjetivosAprendizagemDto;
                    lookup.Add(planoAulaObjetivosAprendizagemDto.Id, retorno);
                }

                var objetivoComponente = retorno.ObjetivosAprendizagemComponente.FirstOrDefault(c => c.ComponenteCurricularId == componenteId);
                if (objetivoComponente == null && componenteId.HasValue)
                {
                    objetivoComponente = new ObjetivosAprendizagemPorComponenteDto();
                    objetivoComponente.ComponenteCurricularId = componenteId.Value;

                    retorno.Adicionar(objetivoComponente);
                }

                if (objetivoComponente != null && objetivoAprendizagemDto != null)
                {
                    objetivoComponente.ObjetivosAprendizagem.Add(objetivoAprendizagemDto);
                }

                return(retorno);
            }, param : new
            {
                aulaId
            });

            return(lookup.Values.FirstOrDefault());
        }