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