public IQueryable <Oferta> ListaOferta(DTOFiltroRelatorioQuestionario filtro) { if (filtro.IdSolucaoEducacional == null) { return(null); } if (filtro.IsRelatorioTutor) { if (filtro.IdProfessor == null) { return(null); } // Obtém os ids das Ofertas da SE informada que possuem o professor informado e que possuam turmas com questionários pós de pesquisa. var ofertas = new ManterTurmaProfessor().ObterTurmaProfessorPorProfessor(filtro.IdProfessor.Value).Where(x => x.Turma.Oferta.SolucaoEducacional.ID == filtro.IdSolucaoEducacional.Value && x.Turma.ListaQuestionarioAssociacao.Any( qa => qa.TipoQuestionarioAssociacao.ID == (int)enumTipoQuestionarioAssociacao.Pos && qa.Questionario.TipoQuestionario.ID == (int)enumTipoQuestionario.Pesquisa)) .Select(x => x.Turma.Oferta.ID) .Distinct() .ToList(); // Tem que consultar novamente porque o Distinct não funciona acima porque a tabela possui campo text, que não pode ser distinguível. return(new ManterOferta().ObterTodasOfertas().Where(x => ofertas.Contains(x.ID))); } var retorno = new ManterOferta().ObterOfertaPorSolucaoEducacional(new SolucaoEducacional { ID = filtro.IdSolucaoEducacional.Value }); if (filtro.IdQuestionario > 0) { retorno = retorno.Where(x => x.ListaTurma.Any(t => t.ListaQuestionarioAssociacao.Any(q => q.Questionario.ID == filtro.IdQuestionario))); } return(retorno.Where(x => x.ListaTurma.Any(t => t.ListaQuestionarioAssociacao.Any())).OrderBy(x => x.Nome).AsQueryable()); }
public IQueryable <Usuario> ListaProfessor() { //Obter professores de turmas que possuam questionários pós de pesquisa. var profs = new ManterTurmaProfessor().ObterTodos().Where(x => x.Turma.ListaQuestionarioAssociacao.Any( qa => qa.TipoQuestionarioAssociacao.ID == (int)enumTipoQuestionarioAssociacao.Pos && qa.Questionario.TipoQuestionario.ID == (int)enumTipoQuestionario.Pesquisa)) .Select(x => x.Professor.ID) .Distinct(); return(new ManterUsuario().ObterTodos().OrderBy(x => x.Nome).Where(x => profs.Contains(x.ID))); }
public IQueryable <Turma> ListaTurma(DTOFiltroRelatorioQuestionario filtro) { if (filtro.IdOferta == null) { return(null); } if (filtro.IsRelatorioTutor) { if (filtro.IdProfessor == null) { return(null); } // Obtém os ids das Turmas da Oferta informada que possuem o professor informado e que possuam turmas com questionários pós de pesquisa. var turmas = new ManterTurmaProfessor().ObterTurmaProfessorPorProfessor(filtro.IdProfessor.Value).Where(x => x.Turma.Oferta.ID == filtro.IdOferta.Value && x.Turma.ListaQuestionarioAssociacao.Any( qa => qa.TipoQuestionarioAssociacao.ID == (int)enumTipoQuestionarioAssociacao.Pos && qa.Questionario.TipoQuestionario.ID == (int)enumTipoQuestionario.Pesquisa)) .Select(x => x.Turma.ID) .Distinct() .ToList(); // Tem que consultar novamente porque o Distinct não funciona acima porque a tabela possui campo text, que não pode ser distinguível. return(new ManterTurma().ObterTodasTurma().Where(x => turmas.Contains(x.ID)).OrderBy(x => x.Nome).AsQueryable()); } return(new ManterTurma().ObterTurmasPorOferta(filtro.IdOferta.Value, false)); }
public IQueryable <SolucaoEducacional> ListaSolucaoEducacionalPorProfessor(DTOFiltroRelatorioQuestionario filtro) { if (filtro.IdProfessor == null) { return(null); } // Obtém os ids das SEs que possuem o professor informado e que possuam turmas com questionários pós de pesquisa. var ses = new ManterTurmaProfessor().ObterTurmaProfessorPorProfessor(filtro.IdProfessor.Value).Where(x => x.Turma.ListaQuestionarioAssociacao.Any( qa => qa.TipoQuestionarioAssociacao.ID == (int)enumTipoQuestionarioAssociacao.Pos && qa.Questionario.TipoQuestionario.ID == (int)enumTipoQuestionario.Pesquisa)) .Select(x => x.Turma.Oferta.SolucaoEducacional.ID) .Distinct() .ToList(); // Tem que consultar novamente porque o Distinct não funciona acima porque a tabela possui campo text, que não pode ser distinguível. return(new ManterSolucaoEducacional().ObterTodosSolucaoEducacional().Where(x => ses.Contains(x.ID))); }