private void ExibirInformacoesDetalhasDaProva(int idQuestionarioParticipacao)
        {
            QuestionarioParticipacao questionarioParticipacao = new ManterQuestionarioParticipacao().ObterQuestionarioParticipacaoPorId(idQuestionarioParticipacao);

            if (questionarioParticipacao != null)
            {
                this.CarregarInformacoesDetalhadasDaProvaDoAluno(questionarioParticipacao);
            }
        }
 private void PreencherGridComProvasRealizadas(UsuarioTrilha usuarioTrilha)
 {
     try
     {
         ManterQuestionarioParticipacao   manterQuestionarioParticipacao = new ManterQuestionarioParticipacao();
         IList <QuestionarioParticipacao> ListaProvasDoUsuario           = manterQuestionarioParticipacao.ObterProvasDaTrilhaDoUsuario(usuarioTrilha.Usuario.ID, usuarioTrilha.TrilhaNivel.ID);
         WebFormHelper.PreencherGrid(ListaProvasDoUsuario, this.dgvProvasRealizadas);
     }
     catch (AcademicoException ex)
     {
         WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, ex.Message);
     }
 }
        public static List <DTORelatorioQuestionarioParticipacao> ConverterDtoRespostas(
            IList <QuestionarioParticipacao> listaQuestionarioParticipacao,
            IReadOnlyList <DTORelatorioQuestionarioQuestao> listaQuestoes)
        {
            var listaParticipacao = new List <DTORelatorioQuestionarioParticipacao>();

            var manterRpp = new ManterRespostaParticipacaoProfessor();

            foreach (var questionarioParticipacao in listaQuestionarioParticipacao)
            {
                // Obtém todas as questões do questionário clone.
                var itensQuestionarioParticipacao =
                    new ManterQuestionarioParticipacao().ListaItemQuestionarioParticipacao(
                        questionarioParticipacao.ID).ToList();

                // Remover questões do tipo Informação, pois não interessam para obter a nota.
                itensQuestionarioParticipacao = itensQuestionarioParticipacao
                                                .Where(x => x.TipoItemQuestionario.ID != (int)enumTipoItemQuestionario.AgrupadorDeQuestoes)
                                                .ToList();

                // Obter todas as respostas selecionadas de todas as questões da participação, para fazer uma consulta só
                // e utilizar esses dados no loop que monta o Dto de respostas.
                var todasRespostasSelecionadas =
                    new ManterItemQuestionarioParticipacaoOpcoes().ObterRespostasSelecionadas(
                        itensQuestionarioParticipacao).ToList();

                var professores =
                    manterRpp.ObterTodosIQueryable()
                    .Where(x => x.QuestionarioParticipacao.ID == questionarioParticipacao.ID)
                    .Select(x => new Usuario
                {
                    ID   = x.Professor.ID,
                    Nome = x.Professor.Nome
                }).Distinct().ToList();

                var participacao = PreencherRespostas(listaQuestoes, itensQuestionarioParticipacao, todasRespostasSelecionadas,
                                                      questionarioParticipacao, professores);

                // Adicionar participação, com todas as respostas.
                listaParticipacao.Add(participacao);
            }

            return(listaParticipacao);
        }
示例#4
0
        protected void dgvProvasRealizadas_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName.Equals("verprova"))
            {
                try
                {
                    int idQuestionarioParticipacao = int.Parse(e.CommandArgument.ToString());

                    if (this.SelecionouUmaProva != null)
                    {
                        QuestionarioParticipacao provaSelecionada = new ManterQuestionarioParticipacao().ObterQuestionarioParticipacaoPorId(idQuestionarioParticipacao);
                        SelecionouUmaProva(this, new SelecionarProvaDeUmAlunoEventArgs(provaSelecionada, this.IdMatriculaTurma));
                    }
                }
                catch (AcademicoException ex)
                {
                    WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, ex.Message);
                    return;
                }
            }
        }
示例#5
0
        protected void rptEtapas_OnItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            var etapa              = (DTOEtapa)e.Item.DataItem;
            var lblTitle           = (Label)e.Item.FindControl("lblTitle");
            var lblDemandadoPro    = (Label)e.Item.FindControl("lblDemandadoPor");
            var lblDataSolicitacao = (Label)e.Item.FindControl("lblDataSolicitacao");
            var lblNumeroDemanda   = (Label)e.Item.FindControl("lblNumeroDemanda");

            lblTitle.Text           = "#" + processo.ID + " - " + processo.Processo.Nome;
            lblDemandadoPro.Text    = processo.Usuario.Nome;
            lblDataSolicitacao.Text = processo.DataSolicitacao.ToString();
            lblNumeroDemanda.Text   = processo.ID.ToString();


            var resposta = new ManterQuestionarioParticipacao().ObterQuestionarioParticipacaoPorId(etapa.ID_RespostaEtapa);

            var rptResposta = (Repeater)e.Item.FindControl("rptResposta");

            if (resposta != null)
            {
                rptResposta.DataSource = resposta.ListaItemQuestionarioParticipacao.Select(p => new { Resposta = this.CleanHtml(p.Resposta), Questao = p.Questao });
                rptResposta.DataBind();
            }
        }
示例#6
0
        protected void rptFormulario_OnItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if ((e.Item.ItemType == ListItemType.Item) ||
                (e.Item.ItemType == ListItemType.AlternatingItem))
            {
                var lblNome               = (Label)e.Item.FindControl("lblNomeCampo");
                var lblResposta           = (Label)e.Item.FindControl("lblResposta");
                var divAbrirCampo         = (HtmlGenericControl)e.Item.FindControl("divAbrirCampo");
                var lblQuebrarLinha       = (Label)e.Item.FindControl("lblQuebrarLinha");
                var campo                 = (CampoResposta)e.Item.DataItem;
                var checkListAlternativas = (CheckBoxList)e.Item.FindControl("chkListaAlternativas");

                var largura = int.Parse(ViewState["larguraCampo"].ToString());

                largura += campo.Campo.Largura;

                if (largura > 12)
                {
                    lblQuebrarLinha.Visible = true;
                    lblQuebrarLinha.Text    = "</div><div class=\"row\">";
                    largura = campo.Campo.Largura;
                }

                divAbrirCampo.Attributes.Add("class", "col-md-" + campo.Campo.Largura + " col-xs-12");

                ViewState["larguraCampo"] = largura;

                lblNome.Text = campo.Campo.Nome;
                ManterCampo mCampo = new ManterCampo();
                // Se tiver alternativas mostra todas e marca quais foram escolhidas
                if (campo.Campo.ListaAlternativas.Count() > 0)
                {
                    var alternativasRespondidas = new BMAlternativaResposta().ObterPorCampoRespostaId(campo.ID);
                    var count = 0;
                    foreach (var alternativa in campo.Campo.ListaAlternativas)
                    {
                        checkListAlternativas.Items.Add(new System.Web.UI.WebControls.ListItem(alternativa.Nome, "0", false));

                        if (alternativasRespondidas.Count(d => d.Alternativa == alternativa) > 0)
                        {
                            checkListAlternativas.Items[count].Selected = true;
                        }
                        count++;
                    }
                }
                else
                {
                    // Caso seja um capo do tipo somatório recupera o total da soma
                    if (campo.Campo.TipoCampo == (int)enumTipoCampo.Somatório &&
                        campo.Campo.ListaCamposVinculados.Count() > 0)
                    {
                        var culture = CultureInfo.CreateSpecificCulture("pt-BR");
                        lblResposta.Text = mCampo.ObterTotalSomatorio(campo.Campo, campo.EtapaResposta.ProcessoResposta.ID).ToString(culture);
                    }
                    else if (campo.Campo.TipoCampo == (int)enumTipoCampo.Questionário)
                    {
                        int idResposta;
                        QuestionarioParticipacao resposta;

                        if (int.TryParse(campo.Resposta, out idResposta))
                        {
                            resposta = new ManterQuestionarioParticipacao().ObterQuestionarioParticipacaoPorId(idResposta);
                            var rptRespostasQuestionario = (Repeater)e.Item.FindControl("rptRespostasQuestionario");
                            if (resposta != null)
                            {
                                rptRespostasQuestionario.DataSource = resposta.ListaItemQuestionarioParticipacao;
                                rptRespostasQuestionario.DataBind();
                            }
                        }
                    }
                    else
                    {
                        lblResposta.Text = campo.Resposta;
                    }
                }
            }
        }
示例#7
0
        public void SalvarQuestionario()
        {
            try
            {
                QuestionarioParticipacao questionarioParticipacao;

                if (!string.IsNullOrWhiteSpace(hdnIdQuestionarioParticipacao.Value))
                {
                    questionarioParticipacao = new ManterQuestionarioParticipacao().ObterQuestionarioParticipacaoPorId(int.Parse(hdnIdQuestionarioParticipacao.Value));
                }
                else
                {
                    var questionario = new ManterQuestionario().ObterQuestionarioPorID(int.Parse(hdnIdQuestionario.Value));

                    var usuarioLogado = new ManterUsuario().ObterUsuarioLogado();

                    questionarioParticipacao = new QuestionarioParticipacao
                    {
                        Questionario               = questionario,
                        DataGeracao                = DateTime.Now,
                        Usuario                    = usuarioLogado,
                        DataParticipacao           = DateTime.Now,
                        TipoQuestionarioAssociacao = new ManterTipoQuestionarioAssociacao().ObterTipoQuestionarioAssociacaoPorID(5),
                        TextoEnunciadoPre          = questionario.TextoEnunciado,
                        Evolutivo                  = false,
                        NivelOcupacional           = new NivelOcupacional {
                            ID = usuarioLogado.NivelOcupacional.ID
                        },
                        Uf = new Uf {
                            ID = usuarioLogado.UF.ID
                        },
                        Turma = new Turma {
                            ID = int.Parse(hdnIdTurma.Value)
                        }
                    };
                }

                var listaItemQuestionarioParticipacao = new List <ItemQuestionarioParticipacao>();

                // Obter respostas dissertivas do questionário.
                foreach (Control row in rptQuestionario.Controls)
                {
                    var hdnIdItemQuestionario = (HiddenField)row.FindControl("hdnIdItemQuestionario");

                    if (hdnIdItemQuestionario == null)
                    {
                        throw new AcademicoException("Questionário mal formatado ou alterado, atualize a página e tente novamente.");
                    }

                    int idItemQuestionario;
                    int.TryParse(hdnIdItemQuestionario.Value, out idItemQuestionario);

                    var itemQuestionario = new ManterItemQuestionario().ObterItemQuestionarioPorID(idItemQuestionario);

                    if (itemQuestionario == null)
                    {
                        throw new AcademicoException("Questionário mal formatado ou alterado, atualize a página e tente novamente.");
                    }

                    var txtResposta = (TextBox)row.FindControl("txtResposta");

                    if (txtResposta == null)
                    {
                        throw new AcademicoException("Questionário mal formatado ou alterado, atualize a página e tente novamente.");
                    }

                    var itemQuestionarioParticipacao = Mapper.Map <ItemQuestionarioParticipacao>(itemQuestionario);

                    itemQuestionarioParticipacao.QuestionarioParticipacao = questionarioParticipacao;

                    if (itemQuestionarioParticipacao.TipoItemQuestionario.ID == (int)enumTipoItemQuestionario.Discursiva)
                    {
                        // Validação do campo em branco.
                        if (string.IsNullOrWhiteSpace(txtResposta.Text))
                        {
                            throw new AcademicoException(string.Format("A questão \"{0}\" é obrigatória",
                                                                       string.IsNullOrWhiteSpace(itemQuestionarioParticipacao.Ordem.ToString())
                                    ? itemQuestionarioParticipacao.Questao
                                    : itemQuestionarioParticipacao.Ordem.ToString()));
                        }

                        itemQuestionarioParticipacao.Resposta = txtResposta.Text;
                    }

                    listaItemQuestionarioParticipacao.Add(itemQuestionarioParticipacao);
                }

                questionarioParticipacao.ListaItemQuestionarioParticipacao = listaItemQuestionarioParticipacao;

                // Executar lógica para questionário de cancelamento.
                if (questionarioParticipacao.TipoQuestionarioAssociacao.ID == (int)enumTipoQuestionarioAssociacao.Cancelamento)
                {
                    var matriculasTurmasIds = hdnIdMatriculaTurma.Value.Split(',');

                    foreach (var matriculaIdString in matriculasTurmasIds)
                    {
                        int matriculaId;

                        if (int.TryParse(matriculaIdString, out matriculaId))
                        {
                            var matriculaTurma       = new MatriculaTurma();
                            var manterMatriculaTurma = new ManterMatriculaTurma();

                            if (matriculaId > 0)
                            {
                                matriculaTurma = manterMatriculaTurma.ObterMatriculaTurmaPorId(matriculaId);

                                // Caso seja Gestor, só altera a matrícula caso seja da sua UF.
                                if (matriculaTurma != null)
                                {
                                    questionarioParticipacao.Turma = matriculaTurma.Turma;
                                }
                            }

                            // Alterar Status da matrícula.
                            if (matriculaTurma != null && matriculaTurma.ID != 0)
                            {
                                var manterMatriculaOferta = new ManterMatriculaOferta();

                                var matriculaOferta = manterMatriculaOferta.ObterMatriculaOfertaPorID(matriculaTurma.MatriculaOferta.ID);

                                matriculaOferta.StatusMatricula = (enumStatusMatricula)int.Parse(hdnIdStatusMatricula.Value);

                                // Salvar Data de conclusão e nota final em lote
                                if ((!string.IsNullOrWhiteSpace(txtDataConclusao.Text) ||
                                     !string.IsNullOrWhiteSpace(hdnNotaFinal.Value)) &&
                                    matriculaOferta.Oferta.SolucaoEducacional.FormaAquisicao.Presencial)
                                {
                                    var dataConclusao = CommonHelper.TratarData(txtDataConclusao.Text,
                                                                                "Data Conclusão do lote");

                                    double?notaFinal = null;

                                    double n;

                                    if (double.TryParse(hdnNotaFinal.Value.Trim(), out n))
                                    {
                                        notaFinal = n;
                                    }

                                    foreach (var mt in matriculaOferta.MatriculaTurma)
                                    {
                                        if (dataConclusao.HasValue &&
                                            (!mt.Turma.DataFinal.HasValue || mt.Turma.DataFinal.Value >= dataConclusao))
                                        {
                                            mt.DataTermino = dataConclusao;
                                        }

                                        if (notaFinal.HasValue)
                                        {
                                            mt.MediaFinal = notaFinal;
                                        }
                                    }
                                }

                                manterMatriculaOferta.AtualizarMatriculaOferta(matriculaOferta, false);

                                matriculaTurma.DataTermino = !string.IsNullOrEmpty(txtDataConclusao.Text) ? DateTime.Parse(txtDataConclusao.Text) : DateTime.Now;

                                manterMatriculaTurma.AlterarMatriculaTurma(matriculaTurma);
                            }
                        }
                    }
                }

                // Salvar participação no questionário.
                new ManterQuestionarioParticipacao().Salvar(questionarioParticipacao);

                WebFormHelper.ExibirMensagem(enumTipoMensagem.Sucesso, "Questionário respondido com Sucesso.");
            }
            catch (AcademicoException ex)
            {
                WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, ex.Message);
            }
        }
        private static List <DTORelatorioQuestionarioEnunciado> ObterEnunciados(
            out List <DTORelatorioQuestionarioQuestao> questoes, List <ItemQuestionario> listaItemQuestionario,
            Questionario questionario, Turma turma)
        {
            questoes = new List <DTORelatorioQuestionarioQuestao>();

            var listaEnunciados = new List <DTORelatorioQuestionarioEnunciado>();

            DTORelatorioQuestionarioEnunciado enunciado = null;

            var idEnunciado = 0;

            var questionariosParticipacaoIds = new ManterQuestionarioParticipacao()
                                               .ObterTodosIQueryable()
                                               .Where(x => x.Questionario.ID == questionario.ID && x.Turma != null && x.Turma.ID == turma.ID)
                                               .Select(x => x.ID)
                                               .ToList();

            var professores = new ManterRespostaParticipacaoProfessor().ObterTodosIQueryable()
                              .Join(new ManterTurmaProfessor().ObterTodos(), rpp => rpp.Professor.ID, tp => tp.Professor.ID, (rpp, tp) =>
                                    new
            {
                rpp,
                tp
            })
                              .Where(x => x.tp.Turma.ID == turma.ID && questionariosParticipacaoIds.Contains(x.rpp.QuestionarioParticipacao.ID))
                              .Select(x => new
            {
                x.rpp.Professor.ID,
                x.rpp.Professor.Nome,
                ItemQuestionarioParticipacaoID = x.rpp.ItemQuestionarioParticipacao.ID
            })
                              .ToList()
                              .GroupBy(x => new { x.ID, x.Nome })
                              .Select(x => new ProfessorDto
            {
                ID   = x.Key.ID,
                Nome = x.Key.Nome,
                ItensQuestionarioParticipacaoIds = x.Select(y => y.ItemQuestionarioParticipacaoID).Distinct().ToList()
            })
                              .ToList();

            foreach (var item in listaItemQuestionario)
            {
                // OOYL
                // Buscar o enunciado da sequencia e atribuir todas as questões que estão entre ele e o próximo enunciado como
                // subquestões deste enunciado. Caso a ordem das questões esteja mal formada, tudo abaixo deixará de funcionar.
                if (item.TipoItemQuestionario.ID == (int)enumTipoItemQuestionario.AgrupadorDeQuestoes)
                {
                    if (enunciado != null)
                    {
                        listaEnunciados.Add(enunciado);
                    }

                    enunciado      = new DTORelatorioQuestionarioEnunciado();
                    idEnunciado    = item.ID;
                    enunciado.Id   = item.ID;
                    enunciado.Nome = item.Questao;
                }
                else
                {
                    if (enunciado == null)
                    {
                        enunciado = new DTORelatorioQuestionarioEnunciado();
                    }

                    enunciado.QuestoesRelacionadas.Add(new DTORelatorioQuestionarioQuestao
                    {
                        Id          = item.ID,
                        IdEnunciado = idEnunciado,
                        Nome        = item.Questao
                    });

                    if (item.InAvaliaProfessor && professores.Any())
                    {
                        foreach (var professor in professores)
                        {
                            questoes.Add(new DTORelatorioQuestionarioQuestao
                            {
                                Id              = item.ID,
                                IdEnunciado     = idEnunciado,
                                Nome            = item.Questao, // É fundamental que o nome permaneça o mesmo.
                                AvaliaProfessor = true,
                                IdProfessor     = professor.ID,
                                NomeProfessor   = professor.Nome,
                                ItensQuestionarioParticipacaoIds = professor.ItensQuestionarioParticipacaoIds
                            });
                        }
                    }
                    else
                    {
                        questoes.Add(new DTORelatorioQuestionarioQuestao
                        {
                            Id          = item.ID,
                            IdEnunciado = idEnunciado,
                            Nome        = item.Questao
                        });
                    }
                }
            }

            if (enunciado != null)
            {
                listaEnunciados.Add(enunciado);
            }

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