コード例 #1
0
        public ActionResult CarregarRespostasDiscursivas(string codigo, string matrAluno)
        {
            if (!StringExt.IsNullOrWhiteSpace(codigo, matrAluno))
            {
                AvalAcadReposicao aval  = AvalAcadReposicao.ListarPorCodigoAvaliacao(codigo);
                Aluno             aluno = Aluno.ListarPorMatricula(matrAluno);
                int codPessoaFisica     = aluno.Usuario.PessoaFisica.CodPessoa;

                var retorno = from alunoResposta in aval.Avaliacao.PessoaResposta
                              orderby alunoResposta.CodQuestao
                              where alunoResposta.CodPessoaFisica == codPessoaFisica &&
                              alunoResposta.AvalTemaQuestao.QuestaoTema.Questao.CodTipoQuestao == TipoQuestao.DISCURSIVA
                              select new
                {
                    codQuestao           = alunoResposta.CodQuestao,
                    questaoEnunciado     = alunoResposta.AvalTemaQuestao.QuestaoTema.Questao.Enunciado,
                    questaoChaveResposta = alunoResposta.AvalTemaQuestao.QuestaoTema.Questao.ChaveDeResposta,
                    alunoResposta        = alunoResposta.RespDiscursiva,
                    notaObtida           = alunoResposta.RespNota.HasValue ? alunoResposta.RespNota.Value.ToValueHtml() : "",
                    correcaoComentario   = alunoResposta.ProfObservacao != null ? alunoResposta.ProfObservacao : "",
                    flagCorrigida        = alunoResposta.RespNota != null ? true : false
                };
                return(Json(retorno));
            }
            return(Json(null));
        }
コード例 #2
0
        public ActionResult ContagemRegressiva(string codAvaliacao)
        {
            AvalAcadReposicao aval      = AvalAcadReposicao.ListarPorCodigoAvaliacao(codAvaliacao);
            string            tempo     = aval.Avaliacao.DtAplicacao.Value.ToLeftTimeString();
            int  quantidadeMilissegundo = 0;
            bool flagLiberada           = aval.Avaliacao.FlagLiberada && aval.Avaliacao.DtTermino > DateTime.Now;

            if (tempo != "Agora")
            {
                char tipo = tempo[(tempo.IndexOf(' ')) + 1];
                switch (tipo)
                {
                case 'd':
                    quantidadeMilissegundo = 0;
                    break;

                case 'h':
                    quantidadeMilissegundo = 1 * 60 * 60 * 1000;
                    break;

                case 'm':
                    quantidadeMilissegundo = 1 * 60 * 1000;
                    break;

                case 's':
                    quantidadeMilissegundo = 1 * 1000;
                    break;

                default:
                    break;
                }
            }
            return(Json(new { Tempo = tempo, Intervalo = quantidadeMilissegundo, FlagLiberada = flagLiberada }));
        }
コード例 #3
0
        public ActionResult CarregarRespostasPorQuestao(string codigo, string codQuestao)
        {
            if (!StringExt.IsNullOrWhiteSpace(codigo, codQuestao))
            {
                AvalAcadReposicao aval = AvalAcadReposicao.ListarPorCodigoAvaliacao(codigo);
                int codQuestaoTemp     = int.Parse(codQuestao);

                var retorno = from questao in aval.Avaliacao.PessoaResposta
                              orderby questao.PessoaFisica.Nome
                              where questao.CodQuestao == codQuestaoTemp &&
                              questao.AvalTemaQuestao.QuestaoTema.Questao.CodTipoQuestao == TipoQuestao.DISCURSIVA
                              select new
                {
                    alunoMatricula       = aval.AlunosRealizaram.FirstOrDefault(a => a.Usuario.CodPessoaFisica == questao.CodPessoaFisica).Usuario.Matricula,
                    alunoNome            = questao.PessoaFisica.Nome,
                    codQuestao           = questao.CodQuestao,
                    questaoEnunciado     = questao.AvalTemaQuestao.QuestaoTema.Questao.Enunciado,
                    questaoChaveResposta = questao.AvalTemaQuestao.QuestaoTema.Questao.ChaveDeResposta,
                    alunoResposta        = questao.RespDiscursiva,
                    notaObtida           = questao.RespNota.HasValue ? questao.RespNota.Value.ToValueHtml() : "",
                    correcaoComentario   = questao.ProfObservacao != null ? questao.ProfObservacao : "",
                    flagCorrigida        = questao.RespNota != null ? true : false
                };
                return(Json(retorno));
            }
            return(Json(null));
        }
コード例 #4
0
 public ActionResult Corrigir(string codigo)
 {
     if (!String.IsNullOrWhiteSpace(codigo))
     {
         AvalAcadReposicao aval = AvalAcadReposicao.ListarPorCodigoAvaliacao(codigo);
         if (aval != null && aval.Avaliacao.FlagCorrecaoPendente && aval.Professor.MatrProfessor == Sessao.UsuarioMatricula)
         {
             return(View(aval));
         }
     }
     return(RedirectToAction("Index"));
 }
コード例 #5
0
 public ActionResult Acompanhar(string codigo)
 {
     if (!String.IsNullOrWhiteSpace(codigo))
     {
         AvalAcadReposicao aval = AvalAcadReposicao.ListarPorCodigoAvaliacao(codigo);
         if (aval != null && aval.Professor.MatrProfessor == Sessao.UsuarioMatricula && aval.Avaliacao.FlagAgendada && aval.Avaliacao.FlagAgora)
         {
             return(View(aval));
         }
     }
     return(RedirectToAction("Agendada", new { codigo = codigo }));
 }
コード例 #6
0
        // GET: historico/avaliacao/reposicao/detalhe/REPO201520001
        public ActionResult Detalhe(string codigo)
        {
            if (!String.IsNullOrWhiteSpace(codigo))
            {
                AvalAcadReposicao aval = AvalAcadReposicao.ListarPorCodigoAvaliacao(codigo);
                if (aval != null)
                {
                    return(View(aval));
                }
            }

            return(RedirectToAction("Index"));
        }
コード例 #7
0
 public ActionResult Imprimir(string codigo)
 {
     if (!String.IsNullOrWhiteSpace(codigo) && !Sistema.AvaliacaoUsuario.ContainsKey(codigo))
     {
         AvalAcadReposicao aval = AvalAcadReposicao.ListarPorCodigoAvaliacao(codigo);
         if (aval != null)
         {
             if (Sessao.UsuarioMatricula == aval.Professor.MatrProfessor)
             {
                 return(View(aval));
             }
         }
     }
     return(RedirectToAction("Index"));
 }
コード例 #8
0
 public ActionResult CarregarAlunos(string codigo)
 {
     if (!String.IsNullOrWhiteSpace(codigo))
     {
         AvalAcadReposicao aval = AvalAcadReposicao.ListarPorCodigoAvaliacao(codigo);
         var result             = from alunos in aval.AlunosRealizaram
                                  select new
         {
             Matricula            = alunos.MatrAluno,
             Nome                 = alunos.Usuario.PessoaFisica.Nome,
             FlagCorrecaoPendente = aval.Avaliacao.AvalPessoaResultado.Single(r => r.CodPessoaFisica == alunos.Usuario.CodPessoaFisica).FlagParcial
         };
         return(Json(result));
     }
     return(Json(null));
 }
コード例 #9
0
 public ActionResult Realizar(string codigo)
 {
     if (!String.IsNullOrWhiteSpace(codigo))
     {
         AvalAcadReposicao aval = AvalAcadReposicao.ListarPorCodigoAvaliacao(codigo);
         if (aval.Avaliacao.FlagPendente &&
             aval.Avaliacao.FlagLiberada &&
             aval.Avaliacao.FlagAgora &&
             aval.Alunos.FirstOrDefault(a => a.MatrAluno == Sessao.UsuarioMatricula) != null)
         {
             Sessao.Inserir("RealizandoAvaliacao", true);
             return(View(aval));
         }
     }
     return(RedirectToAction("Agendada", new { codigo = codigo }));
 }
コード例 #10
0
 public ActionResult DetalheIndividual(string codigo, string matricula)
 {
     if (!StringExt.IsNullOrWhiteSpace(codigo, matricula))
     {
         AvalAcadReposicao aval = AvalAcadReposicao.ListarPorCodigoAvaliacao(codigo);
         if (aval != null)
         {
             int codPessoaFisica       = Usuario.ObterPessoaFisica(matricula);
             AvalPessoaResultado model = aval.Avaliacao.AvalPessoaResultado.FirstOrDefault(r => r.CodPessoaFisica == codPessoaFisica);
             if (model != null)
             {
                 return(PartialView("_Individual", model));
             }
         }
     }
     return(null);
 }
コード例 #11
0
 public ActionResult CarregarQuestoesDiscursivas(string codigo)
 {
     if (!String.IsNullOrWhiteSpace(codigo))
     {
         AvalAcadReposicao aval = AvalAcadReposicao.ListarPorCodigoAvaliacao(codigo);
         var result             = from questao in aval.Avaliacao.Questao
                                  where questao.CodTipoQuestao == TipoQuestao.DISCURSIVA
                                  orderby questao.CodQuestao
                                  select new
         {
             codQuestao           = questao.CodQuestao,
             questaoEnunciado     = questao.Enunciado,
             questaoChaveResposta = questao.ChaveDeResposta,
             flagCorrecaoPendente = aval.Avaliacao.PessoaResposta.Where(r => r.CodQuestao == questao.CodQuestao && !r.RespNota.HasValue).Count() > 0
         };
         return(Json(result));
     }
     return(Json(null));
 }
コード例 #12
0
        public ActionResult Configurar(string codigo)
        {
            TempData[$"listaQuestoesAntigas{codigo.ToUpper()}"]       = new List <AvalTemaQuestao>();
            TempData[$"listaQuestoesNovas{codigo.ToUpper()}"]         = new List <AvalTemaQuestao>();
            TempData[$"listaQuestoesPossiveisObj{codigo.ToUpper()}"]  = new List <QuestaoTema>();
            TempData[$"listaQuestoesPossiveisDisc{codigo.ToUpper()}"] = new List <QuestaoTema>();
            TempData[$"listaQuestoesIndices{codigo.ToUpper()}"]       = new List <int>();
            TempData[$"listaQuestoesRecentes{codigo.ToUpper()}"]      = new List <int>();

            if (!String.IsNullOrWhiteSpace(codigo) && !Sistema.AvaliacaoUsuario.ContainsKey(codigo))
            {
                AvalAcadReposicao repo = AvalAcadReposicao.ListarPorCodigoAvaliacao(codigo);
                if (repo != null && repo.Professor.MatrProfessor == Sessao.UsuarioMatricula && repo.Avaliacao.AvalPessoaResultado.Count == 0)
                {
                    return(View(repo));
                }
            }
            return(RedirectToAction("Index"));
        }
コード例 #13
0
        public ActionResult Agendar(string codigo)
        {
            if (String.IsNullOrWhiteSpace(codigo) || Sistema.AvaliacaoUsuario.ContainsKey(codigo))
            {
                return(RedirectToAction("Index"));
            }

            AvalAcadReposicao aval = AvalAcadReposicao.ListarPorCodigoAvaliacao(codigo);

            if (aval.Professor.MatrProfessor == Sessao.UsuarioMatricula)
            {
                var model = new AvaliacaoAgendarViewModel();

                model.Avaliacao = aval.Avaliacao;
                model.Salas     = Sala.ListarOrdenadamente();

                return(View(model));
            }
            return(RedirectToAction("Index"));
        }
コード例 #14
0
        public ActionResult Agendar(string codigo, FormCollection form)
        {
            string strCodSala  = form["ddlSala"];
            string data        = form["txtData"];
            string horaInicio  = form["txtHoraInicio"];
            string horaTermino = form["txtHoraTermino"];

            if (!StringExt.IsNullOrWhiteSpace(strCodSala, data, horaInicio, horaTermino))
            {
                AvalAcadReposicao aval = AvalAcadReposicao.ListarPorCodigoAvaliacao(codigo);

                if (aval.Professor.MatrProfessor == Sessao.UsuarioMatricula)
                {
                    // Sala
                    int codSala;
                    int.TryParse(strCodSala, out codSala);
                    Sala sala = Sala.ListarPorCodigo(codSala);
                    if (sala != null)
                    {
                        aval.Sala = sala;
                    }

                    // Data de Aplicacao
                    DateTime dtAplicacao        = DateTime.Parse(data + " " + horaInicio, new CultureInfo("pt-BR"));
                    DateTime dtAplicacaoTermino = DateTime.Parse(data + " " + horaTermino, new CultureInfo("pt-BR"));

                    if (dtAplicacao.IsFuture() && dtAplicacaoTermino.IsFuture() && dtAplicacaoTermino > dtAplicacao)
                    {
                        aval.Avaliacao.DtAplicacao = dtAplicacao;
                        aval.Avaliacao.Duracao     = Convert.ToInt32((dtAplicacaoTermino - aval.Avaliacao.DtAplicacao.Value).TotalMinutes);
                    }

                    aval.Avaliacao.FlagLiberada = false;

                    Repositorio.Commit();
                }
            }

            return(RedirectToAction("Agendada", new { codigo = codigo }));
        }
コード例 #15
0
        public void Desistir(string codigo)
        {
            int codPessoaFisica = Usuario.ObterPessoaFisica(Sessao.UsuarioMatricula);

            if (!String.IsNullOrWhiteSpace(codigo))
            {
                AvalAcadReposicao aval = AvalAcadReposicao.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;
                    avalPessoaResultado.Nota            = 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)
                            {
                                avalQuesPessoaResposta.RespAlternativa = -1;
                            }
                            avalQuesPessoaResposta.RespNota = 0;
                            avalTemaQuestao.AvalQuesPessoaResposta.Add(avalQuesPessoaResposta);
                        }
                    }

                    aval.Avaliacao.AvalPessoaResultado.Add(avalPessoaResultado);

                    Repositorio.Commit();
                    Sessao.Inserir("RealizandoAvaliacao", false);
                }
            }
        }
コード例 #16
0
        public ActionResult TrocarQuestao(string codigoAvaliacao, int tipo, int indice, int codQuestao)
        {
            List <AvalTemaQuestao> antigas           = (List <AvalTemaQuestao>)TempData[$"listaQuestoesAntigas{codigoAvaliacao.ToUpper()}"];
            List <AvalTemaQuestao> novas             = (List <AvalTemaQuestao>)TempData[$"listaQuestoesNovas{codigoAvaliacao.ToUpper()}"];
            List <QuestaoTema>     questoesTrocaObj  = (List <QuestaoTema>)TempData[$"listaQuestoesPossiveisObj{codigoAvaliacao.ToUpper()}"];
            List <QuestaoTema>     questoesTrocaDisc = (List <QuestaoTema>)TempData[$"listaQuestoesPossiveisDisc{codigoAvaliacao.ToUpper()}"];
            List <int>             indices           = (List <int>)TempData[$"listaQuestoesIndices{codigoAvaliacao.ToUpper()}"];
            List <int>             recentes          = (List <int>)TempData[$"listaQuestoesRecentes{codigoAvaliacao.ToUpper()}"];

            TempData.Keep();

            if (!String.IsNullOrEmpty(codigoAvaliacao))
            {
                AvalAcadReposicao repo = AvalAcadReposicao.ListarPorCodigoAvaliacao(codigoAvaliacao);
                if (repo != null && repo.Professor.MatrProfessor == Sessao.UsuarioMatricula)
                {
                    List <QuestaoTema> AvalQuestTema = repo.Avaliacao.QuestaoTema;

                    QuestaoTema questao = null;

                    if (tipo == TipoQuestao.OBJETIVA)
                    {
                        if (questoesTrocaObj.Count <= 0)
                        {
                            TempData[$"listaQuestoesPossiveisObj{codigoAvaliacao.ToUpper()}"] = Questao.ObterNovasQuestoes(AvalQuestTema, tipo);
                            questoesTrocaObj = (List <QuestaoTema>)TempData[$"listaQuestoesPossiveisObj{codigoAvaliacao.ToUpper()}"];
                        }

                        int random = Sistema.Random.Next(0, questoesTrocaObj.Count);
                        questao = questoesTrocaObj.ElementAtOrDefault(random);
                    }
                    else if (tipo == TipoQuestao.DISCURSIVA)
                    {
                        if (questoesTrocaDisc.Count <= 0)
                        {
                            TempData[$"listaQuestoesPossiveisDisc{codigoAvaliacao.ToUpper()}"] = Questao.ObterNovasQuestoes(AvalQuestTema, tipo);
                            questoesTrocaDisc = (List <QuestaoTema>)TempData[$"listaQuestoesPossiveisDisc{codigoAvaliacao.ToUpper()}"];
                        }

                        int random = Sistema.Random.Next(0, questoesTrocaDisc.Count);
                        questao = questoesTrocaDisc.ElementAtOrDefault(random);
                    }

                    if (questao != null)
                    {
                        if (!indices.Contains(indice))
                        {
                            AvalTemaQuestao aqtAntiga =
                                (from atq in Repositorio.GetInstance().AvalTemaQuestao
                                 where atq.Ano == repo.Ano &&
                                 atq.Semestre == repo.Semestre &&
                                 atq.CodTipoAvaliacao == repo.CodTipoAvaliacao &&
                                 atq.NumIdentificador == repo.NumIdentificador &&
                                 atq.CodQuestao == codQuestao
                                 select atq).FirstOrDefault();
                            antigas.Add(aqtAntiga);
                            indices.Add(indice);
                        }

                        int index = indices.IndexOf(indice);

                        var atqNova = new AvalTemaQuestao();
                        atqNova.Ano              = repo.Avaliacao.Ano;
                        atqNova.Semestre         = repo.Avaliacao.Semestre;
                        atqNova.CodTipoAvaliacao = repo.Avaliacao.CodTipoAvaliacao;
                        atqNova.NumIdentificador = repo.Avaliacao.NumIdentificador;
                        atqNova.QuestaoTema      = questao;

                        if (novas.Count > index)
                        {
                            novas.RemoveAt(index);
                        }
                        if (recentes.Count > index)
                        {
                            recentes.RemoveAt(index);
                        }

                        novas.Insert(index, atqNova);
                        recentes.Insert(index, codQuestao);

                        ViewData["Index"] = indice;
                        return(PartialView("_QuestaoConfigurar", questao.Questao));
                    }
                }
            }

            return(Json(String.Empty));
        }
コード例 #17
0
        public ActionResult Resultado(string codigo, FormCollection form)
        {
            int codPessoaFisica = Usuario.ObterPessoaFisica(Sessao.UsuarioMatricula);

            if (!String.IsNullOrWhiteSpace(codigo))
            {
                AvalAcadReposicao aval = AvalAcadReposicao.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"));
        }