public IQueryable <Questionario> ListaQuestionario(DTOFiltroRelatorioQuestionario filtro) { var resultado = new ManterQuestionario().ObterTodosIQueryable(); if (filtro.IdTurma != null) { resultado = resultado.Where(x => x.ListaQuestionarioParticipacao.Any(y => y.Turma.ID == filtro.IdTurma)); } if (filtro.IdOferta != null) { resultado = resultado.Where(x => x.ListaQuestionarioParticipacao.Any(y => y.Turma.Oferta.ID == filtro.IdOferta)); } if (filtro.IdSolucaoEducacional != null) { resultado = resultado.Where(x => x.ListaQuestionarioParticipacao.Any(y => y.Turma.Oferta.SolucaoEducacional.ID == filtro.IdSolucaoEducacional)); } if (filtro.IdProcesso != null) { resultado = resultado.Where(x => x.ListaCampos.Any(c => c.Etapa.Processo.ID == filtro.IdProcesso)); } if (filtro.IdTipoQuestionario != null) { resultado = resultado.Where(x => x.TipoQuestionario.ID == filtro.IdTipoQuestionario); } return(resultado); }
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 <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))); }
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 <QuestionarioParticipacao> ObterPorQuestionarioPorFiltro(DTOFiltroRelatorioQuestionario filtro) { return(questionarioParticipacao.ObterPorQuestionarioPorFiltro(filtro.IdQuestionario, filtro.IdsCategorias, filtro.IdSolucaoEducacional, filtro.IdOferta, filtro.IdTurma, filtro.IdsUf, filtro.IdsNivelOcupacional, filtro.IdsStatusMatricula)); }
public DTORelatorioQuestionarioRespondente ObterRelatorioRespondente(DTOFiltroRelatorioQuestionario filtro) { if (!filtro.PossuiDados()) { throw new AcademicoException("Não existem filtros para efetuar uma pesquisa."); } if (filtro.IsRelatorioTutor && filtro.IdTurma == null) { throw new AcademicoException("O campo \"Turma\" é obrigatório no relatório de tutor."); } if (filtro.IdQuestionario == 0) { throw new AcademicoException("Selecione um questionário."); } if (filtro.IdOferta != null && filtro.IdTurma == null) { throw new AcademicoException("O campo \"Turma\" é obrigatório."); } Questionario questionario; Turma turma; if (filtro.IsRelatorioTutor) { var associacao = new ManterTurma().ObterTurmaPorID(filtro.IdTurma.Value) .ListaQuestionarioAssociacao.FirstOrDefault( x => x.TipoQuestionarioAssociacao.ID == (int)enumTipoQuestionarioAssociacao.Pos && x.Questionario.TipoQuestionario.ID == (int)enumTipoQuestionario.Pesquisa); if (associacao == null) { throw new AcademicoException("A turma selecionada não possui questionário pós de pesquisa."); } questionario = associacao.Questionario; turma = associacao.Turma; } else { questionario = new ManterQuestionario().ObterQuestionarioPorID(filtro.IdQuestionario); if (filtro.IdTurma != null) { turma = new ManterTurma().ObterTurmaPorID(filtro.IdTurma.Value); } else { turma = new Turma(); } } if (questionario == null) { throw new AcademicoException( "Nenhum questionário foi encontrado. Se certifique que o questionário selecionado ainda está cadastrado."); } var listaItemQuestionario = questionario.ListaItemQuestionario.OrderBy(x => x.Ordem).ToList(); // Se não houverem questões relacionadas ao questionário, não tem como emitir o relatório. if (!listaItemQuestionario.Any()) { throw new AcademicoException("O questionário \"" + questionario.Nome + "\" não possui questões cadastradas, portanto não é possível emitir o relatório."); } List <DTORelatorioQuestionarioQuestao> questoes; var enunciados = ObterEnunciados(out questoes, listaItemQuestionario, questionario, turma); // Obter consulta do questionário, mas não enumera ainda. // You know what i see here? Possibilities... var consulta = new ManterQuestionarioParticipacao().ObterPorQuestionarioPorFiltro(filtro); // Retornar dados do relatório. return(new DTORelatorioQuestionarioRespondente { Enunciados = enunciados, Questoes = questoes, Consulta = consulta, TotalRespostas = consulta.Count(), TotalQuestoes = listaItemQuestionario.Count() }); }