Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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());
        }
Ejemplo n.º 3
0
        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)));
        }
Ejemplo n.º 4
0
        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));
 }
Ejemplo n.º 6
0
        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()
            });
        }