public ActionResult Resultado(string codigo, FormCollection form) { int codPessoaFisica = Usuario.ObterPessoaFisica(Helpers.Sessao.UsuarioMatricula); if (!String.IsNullOrWhiteSpace(codigo)) { AvalAcademica aval = AvalAcademica.ListarPorCodigoAvaliacao(codigo); if (aval.Alunos.SingleOrDefault(a => a.MatrAluno == Sessao.UsuarioMatricula) != null && aval.Avaliacao.AvalPessoaResultado.SingleOrDefault(a => a.CodPessoaFisica == codPessoaFisica) == null) { var avalPessoaResultado = new AvalPessoaResultado(); avalPessoaResultado.CodPessoaFisica = codPessoaFisica; avalPessoaResultado.HoraTermino = DateTime.Now; avalPessoaResultado.QteAcertoObj = 0; double quantidadeObjetiva = 0; foreach (var avaliacaoTema in aval.Avaliacao.AvaliacaoTema) { foreach (var avalTemaQuestao in avaliacaoTema.AvalTemaQuestao) { var avalQuesPessoaResposta = new AvalQuesPessoaResposta(); avalQuesPessoaResposta.CodPessoaFisica = codPessoaFisica; if (avalTemaQuestao.QuestaoTema.Questao.CodTipoQuestao == TipoQuestao.OBJETIVA) { quantidadeObjetiva++; int respAlternativa = -1; string strRespAlternativa = form["rdoResposta" + avalTemaQuestao.QuestaoTema.Questao.CodQuestao]; if (!String.IsNullOrWhiteSpace(strRespAlternativa)) { int.TryParse(strRespAlternativa, out respAlternativa); } avalQuesPessoaResposta.RespAlternativa = respAlternativa; if (avalTemaQuestao.QuestaoTema.Questao.Alternativa.First(q => q.FlagGabarito).CodOrdem == avalQuesPessoaResposta.RespAlternativa) { avalQuesPessoaResposta.RespNota = 10; avalPessoaResultado.QteAcertoObj++; } else { avalQuesPessoaResposta.RespNota = 0; } } else { avalQuesPessoaResposta.RespDiscursiva = form["txtResposta" + avalTemaQuestao.QuestaoTema.Questao.CodQuestao].Trim(); } avalQuesPessoaResposta.RespComentario = !String.IsNullOrWhiteSpace(form["txtComentario" + avalTemaQuestao.QuestaoTema.Questao.CodQuestao]) ? form["txtComentario" + avalTemaQuestao.QuestaoTema.Questao.CodQuestao].Trim() : null; avalTemaQuestao.AvalQuesPessoaResposta.Add(avalQuesPessoaResposta); } } IEnumerable <AvalQuesPessoaResposta> lstAvalQuesPessoaResposta = aval.Avaliacao.PessoaResposta.Where(r => r.CodPessoaFisica == codPessoaFisica); avalPessoaResultado.Nota = lstAvalQuesPessoaResposta.Average(r => r.RespNota); aval.Avaliacao.AvalPessoaResultado.Add(avalPessoaResultado); Repositorio.Commit(); var model = new AvaliacaoResultadoViewModel(); model.Avaliacao = aval.Avaliacao; model.Porcentagem = (avalPessoaResultado.QteAcertoObj.Value / quantidadeObjetiva) * 100; Sessao.Inserir("RealizandoAvaliacao", false); return(View(model)); } return(RedirectToAction("Detalhe", new { codigo = aval.Avaliacao.CodAvaliacao })); } return(RedirectToAction("Index")); }
public ActionResult Resultado(string codigo, FormCollection form) { int codPessoaFisica = Sistema.UsuarioAtivo[Sessao.UsuarioMatricula].Usuario.CodPessoaFisica; if (!String.IsNullOrWhiteSpace(codigo) && form.HasKeys()) { AvalAuto auto = AvalAuto.ListarPorCodigoAvaliacao(codigo); if (auto.Avaliacao.AvalPessoaResultado.Count == 0 && auto.CodPessoaFisica == codPessoaFisica) { var avalPessoaResultado = new AvalPessoaResultado(); avalPessoaResultado.CodPessoaFisica = codPessoaFisica; avalPessoaResultado.HoraTermino = DateTime.Now; avalPessoaResultado.QteAcertoObj = 0; double qteObjetiva = 0; Dictionary <string, double> qteObjetivaDisciplina = new Dictionary <string, double>(); Dictionary <string, double> qteObjetivaAcertoDisciplina = new Dictionary <string, double>(); foreach (var avaliacaoTema in auto.Avaliacao.AvaliacaoTema) { if (!qteObjetivaDisciplina.ContainsKey(avaliacaoTema.Tema.Disciplina.Descricao)) { qteObjetivaDisciplina.Add(avaliacaoTema.Tema.Disciplina.Descricao, 0); } if (!qteObjetivaAcertoDisciplina.ContainsKey(avaliacaoTema.Tema.Disciplina.Descricao)) { qteObjetivaAcertoDisciplina.Add(avaliacaoTema.Tema.Disciplina.Descricao, 0); } foreach (var avalTemaQuestao in avaliacaoTema.AvalTemaQuestao) { AvalQuesPessoaResposta avalQuesPessoaResposta = avalTemaQuestao.AvalQuesPessoaResposta.FirstOrDefault(r => r.PessoaFisica.CodPessoa == codPessoaFisica); if (avalQuesPessoaResposta == null) { avalQuesPessoaResposta = new AvalQuesPessoaResposta(); } avalQuesPessoaResposta.CodPessoaFisica = codPessoaFisica; if (avalTemaQuestao.QuestaoTema.Questao.CodTipoQuestao == TipoQuestao.OBJETIVA) { qteObjetivaDisciplina[avaliacaoTema.Tema.Disciplina.Descricao]++; qteObjetiva++; avalQuesPessoaResposta.RespAlternativa = int.Parse(form["rdoResposta" + avalTemaQuestao.QuestaoTema.Questao.CodQuestao]); if (avalTemaQuestao.QuestaoTema.Questao.Alternativa.First(q => q.FlagGabarito).CodOrdem == avalQuesPessoaResposta.RespAlternativa) { avalPessoaResultado.QteAcertoObj++; avalQuesPessoaResposta.RespNota = 10; qteObjetivaAcertoDisciplina[avaliacaoTema.Tema.Disciplina.Descricao]++; } else { avalQuesPessoaResposta.RespNota = 0; } } else { avalQuesPessoaResposta.RespDiscursiva = form["txtResposta" + avalTemaQuestao.QuestaoTema.Questao.CodQuestao].Trim(); } avalQuesPessoaResposta.RespComentario = !String.IsNullOrWhiteSpace(form["txtComentario" + avalTemaQuestao.QuestaoTema.Questao.CodQuestao]) ? form["txtComentario" + avalTemaQuestao.QuestaoTema.Questao.CodQuestao].Trim() : null; avalTemaQuestao.AvalQuesPessoaResposta.Add(avalQuesPessoaResposta); } } IEnumerable <AvalQuesPessoaResposta> lstAvalQuesPessoaResposta = auto.Avaliacao.PessoaResposta.Where(r => r.CodPessoaFisica == codPessoaFisica); avalPessoaResultado.Nota = lstAvalQuesPessoaResposta.Average(r => r.RespNota); auto.Avaliacao.AvalPessoaResultado.Add(avalPessoaResultado); Repositorio.Commit(); var model = new AvaliacaoResultadoViewModel(); model.Avaliacao = auto.Avaliacao; model.Porcentagem = (avalPessoaResultado.QteAcertoObj.Value / qteObjetiva) * 100; foreach (var chave in qteObjetivaDisciplina.Keys) { if (qteObjetivaDisciplina[chave] > 0) { model.Desempenho.Add(chave, (qteObjetivaAcertoDisciplina[chave] / qteObjetivaDisciplina[chave]) * 100); } } Lembrete.AdicionarNotificacao($"Autoavaliação {auto.Avaliacao.CodAvaliacao} realizada. Confira seu resultado!"); return(View(model)); } return(RedirectToAction("Detalhe", new { codigo = auto.Avaliacao.CodAvaliacao })); } return(RedirectToAction("Realizar")); }