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