Beispiel #1
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))
            {
                AvalAcademica acad = AvalAcademica.ListarPorCodigoAvaliacao(codigo);
                if (acad != null && acad.Avaliacao.AvalPessoaResultado.Count == 0)
                {
                    string    matricula = Helpers.Sessao.UsuarioMatricula;
                    Professor professor = Professor.ListarPorMatricula(matricula);
                    if (professor != null)
                    {
                        if (professor.CodProfessor == acad.CodProfessor)
                        {
                            return(View(acad));
                        }
                    }
                }
            }
            return(RedirectToAction("Index"));
        }
Beispiel #2
0
        public ActionResult Pendente()
        {
            string matricula    = Sessao.UsuarioMatricula;
            int    codProfessor = Professor.ListarPorMatricula(matricula).CodProfessor;

            return(View(AvalAcademica.ListarCorrecaoPendentePorProfessor(codProfessor)));
        }
Beispiel #3
0
        public ActionResult CarregarRespostasDiscursivas(string codigo, string matrAluno)
        {
            if (!String.IsNullOrWhiteSpace(codigo) && !String.IsNullOrWhiteSpace(matrAluno))
            {
                AvalAcademica acad            = AvalAcademica.ListarPorCodigoAvaliacao(codigo);
                Aluno         aluno           = Aluno.ListarPorMatricula(matrAluno);
                int           codPessoaFisica = aluno.Usuario.PessoaFisica.CodPessoa;

                var retorno = from alunoResposta in acad.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));
        }
Beispiel #4
0
        public ActionResult ContagemRegressiva(string codAvaliacao)
        {
            AvalAcademica avalAcad = AvalAcademica.ListarPorCodigoAvaliacao(codAvaliacao);
            string        tempo    = avalAcad.Avaliacao.DtAplicacao.Value.ToLeftTimeString();
            int           quantidadeMilissegundo = 0;
            bool          flagLiberada           = avalAcad.Avaliacao.FlagLiberada && avalAcad.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 }));
        }
        public ActionResult Justificar(string codigo, Dictionary <string, string> justificacao)
        {
            AvalAcademica aval = AvalAcademica.ListarPorCodigoAvaliacao(codigo);

            if (aval.Professor.Usuario.Matricula == Sessao.UsuarioMatricula)
            {
                if (Usuario.Verificar(justificacao["senha"]))
                {
                    Aluno aluno             = Aluno.ListarPorMatricula(justificacao["aluno"]);
                    AvalPessoaResultado apr = aval.Avaliacao.AvalPessoaResultado.FirstOrDefault(p => p.CodPessoaFisica == aluno.Usuario.CodPessoaFisica);
                    if (apr == null)
                    {
                        var avalPessoaResultado = new AvalPessoaResultado();
                        avalPessoaResultado.CodPessoaFisica = aluno.Usuario.CodPessoaFisica;
                        avalPessoaResultado.HoraTermino     = aval.Avaliacao.DtAplicacao;
                        avalPessoaResultado.QteAcertoObj    = 0;
                        avalPessoaResultado.Nota            = 0;

                        avalPessoaResultado.Justificacao.Add(new Justificacao()
                        {
                            Professor     = aval.Professor,
                            DtCadastro    = DateTime.Parse(justificacao["cadastro"], new CultureInfo("pt-BR")),
                            DtConfirmacao = DateTime.Parse(justificacao["confirmacao"], new CultureInfo("pt-BR")),
                            Descricao     = justificacao["descricao"]
                        });

                        aval.Avaliacao.AvalPessoaResultado.Add(avalPessoaResultado);

                        Repositorio.Commit();
                    }
                }
            }
            return(null);
        }
Beispiel #6
0
        public ActionResult CarregarRespostasPorQuestao(string codigo, string codQuestao)
        {
            if (!StringExt.IsNullOrWhiteSpace(codigo, codQuestao))
            {
                AvalAcademica acad           = AvalAcademica.ListarPorCodigoAvaliacao(codigo);
                int           codQuestaoTemp = int.Parse(codQuestao);

                var retorno = from questao in acad.Avaliacao.PessoaResposta
                              orderby questao.PessoaFisica.Nome
                              where questao.CodQuestao == codQuestaoTemp &&
                              questao.AvalTemaQuestao.QuestaoTema.Questao.CodTipoQuestao == TipoQuestao.DISCURSIVA
                              select new
                {
                    alunoMatricula       = acad.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));
        }
Beispiel #7
0
 public void RecuperarContadoresPrincipal(string matricula)
 {
     if (!string.IsNullOrWhiteSpace(matricula))
     {
         if (!UsuarioCache.ContainsKey(matricula))
         {
             UsuarioCache[matricula] = new Dictionary <string, object>();
         }
         if (!UsuarioCache[matricula].ContainsKey("principal"))
         {
             Dictionary <string, int> atalho = new Dictionary <string, int>();
             atalho.Add("autoavaliacao", AvalAuto.ListarNaoRealizadaPorPessoa(Sistema.UsuarioAtivo[matricula].Usuario.CodPessoaFisica).Count);
             if (Sistema.UsuarioAtivo[matricula].Usuario.CodCategoria == Categoria.PROFESSOR)
             {
                 int codProfessor = Models.Professor.ListarPorMatricula(matricula).CodProfessor;
                 var lst          = AvalAcademica.ListarCorrecaoPendentePorProfessor(codProfessor).Select(a => a.Avaliacao);
                 lst = lst.Union(AvalCertificacao.ListarCorrecaoPendentePorProfessor(codProfessor).Select(a => a.Avaliacao));
                 lst = lst.Union(AvalAcadReposicao.ListarCorrecaoPendentePorProfessor(codProfessor).Select(a => a.Avaliacao));
                 atalho.Add("correcao", lst.Count());
             }
             UsuarioCache[matricula]["principal"] = atalho;
         }
         if (Context != null)
         {
             Clients.Client(Context.ConnectionId).receberContadores(UsuarioCache[matricula]["principal"]);
         }
     }
 }
        public ActionResult Justificar(string codigo)
        {
            AvalAcademica aval = AvalAcademica.ListarPorCodigoAvaliacao(codigo);

            if (aval.Professor.Usuario.Matricula == Sessao.UsuarioMatricula)
            {
                return(View(aval));
            }
            return(RedirectToAction("Index"));
        }
Beispiel #9
0
        // GET: historico/avaliacao/academica/detalhe/ACAD201520001
        public ActionResult Detalhe(string codigo)
        {
            if (!String.IsNullOrWhiteSpace(codigo))
            {
                AvalAcademica acad = AvalAcademica.ListarPorCodigoAvaliacao(codigo);
                if (acad != null)
                {
                    return(View(acad));
                }
            }

            return(RedirectToAction("Index"));
        }
Beispiel #10
0
        public ActionResult Corrigir(string codigo)
        {
            if (!String.IsNullOrWhiteSpace(codigo))
            {
                AvalAcademica acad = AvalAcademica.ListarPorCodigoAvaliacao(codigo);

                if (acad != null && acad.Avaliacao.FlagCorrecaoPendente && acad.Professor.MatrProfessor == Sessao.UsuarioMatricula)
                {
                    return(View(acad));
                }
            }
            return(RedirectToAction("Index"));
        }
Beispiel #11
0
        public ActionResult CorrigirQuestaoAluno(string codigo, string matrAluno, string codQuestao, string notaObtida, string profObservacao)
        {
            if (!StringExt.IsNullOrWhiteSpace(codigo, matrAluno, codQuestao))
            {
                int    codQuesTemp = int.Parse(codQuestao);
                double nota        = Double.Parse(notaObtida.Replace('.', ','));

                bool retorno = AvalAcademica.CorrigirQuestaoAluno(codigo, matrAluno, codQuesTemp, nota, profObservacao);

                return(Json(retorno));
            }
            return(Json(false));
        }
Beispiel #12
0
 // GET: historico/avaliacao/academica/agendada/ACAD201520001
 public ActionResult Agendada(string codigo)
 {
     if (!String.IsNullOrWhiteSpace(codigo))
     {
         Usuario       usuario = Usuario.ListarPorMatricula(Helpers.Sessao.UsuarioMatricula);
         AvalAcademica acad    = AvalAcademica.ListarAgendadaPorUsuario(usuario).FirstOrDefault(a => a.Avaliacao.CodAvaliacao.ToLower() == codigo.ToLower());
         if (acad != null)
         {
             return(View(acad));
         }
     }
     return(RedirectToAction("Detalhe", new { codigo = codigo }));
 }
        public ActionResult Pendente()
        {
            int codProfessor = Professor.ListarPorMatricula(Sessao.UsuarioMatricula).CodProfessor;

            IEnumerable <Avaliacao> avaliacoes = AvalAcademica.ListarCorrecaoPendentePorProfessor(codProfessor)
                                                 .Select(a => a.Avaliacao);

            avaliacoes = avaliacoes.Union(AvalCertificacao.ListarCorrecaoPendentePorProfessor(codProfessor)
                                          .Select(a => a.Avaliacao));
            avaliacoes = avaliacoes.Union(AvalAcadReposicao.ListarCorrecaoPendentePorProfessor(codProfessor)
                                          .Select(a => a.Avaliacao));

            return(View(avaliacoes.OrderBy(a => a.DtAplicacao).ToList()));
        }
Beispiel #14
0
 public ActionResult Acompanhar(string codigo)
 {
     if (!String.IsNullOrWhiteSpace(codigo))
     {
         if (Sessao.UsuarioCategoriaCodigo == Categoria.PROFESSOR)
         {
             AvalAcademica acad = AvalAcademica.ListarPorCodigoAvaliacao(codigo);
             if (acad != null && acad.Avaliacao.FlagAgendada && acad.Avaliacao.FlagAgora)
             {
                 return(View(acad));
             }
         }
     }
     return(RedirectToAction("Agendada", new { codigo = codigo }));
 }
Beispiel #15
0
 public ActionResult Realizar(string codigo)
 {
     if (Sessao.UsuarioCategoriaCodigo == Categoria.ALUNO && !String.IsNullOrWhiteSpace(codigo))
     {
         AvalAcademica avalAcad = AvalAcademica.ListarPorCodigoAvaliacao(codigo);
         if (avalAcad.Avaliacao.FlagPendente &&
             avalAcad.Avaliacao.FlagLiberada &&
             avalAcad.Avaliacao.FlagAgora &&
             avalAcad.Alunos.FirstOrDefault(a => a.MatrAluno == Sessao.UsuarioMatricula) != null)
         {
             Sessao.Inserir("RealizandoAvaliacao", true);
             return(View(avalAcad));
         }
     }
     return(RedirectToAction("Agendada", new { codigo = codigo }));
 }
Beispiel #16
0
 public ActionResult CarregarAlunos(string codigo)
 {
     if (!String.IsNullOrWhiteSpace(codigo))
     {
         AvalAcademica acad    = AvalAcademica.ListarPorCodigoAvaliacao(codigo);
         var           retorno = from alunos in acad.AlunosRealizaram
                                 select new
         {
             Matricula            = alunos.MatrAluno,
             Nome                 = alunos.Usuario.PessoaFisica.Nome,
             FlagCorrecaoPendente = acad.Avaliacao.AvalPessoaResultado.Single(r => r.CodPessoaFisica == alunos.Usuario.CodPessoaFisica).FlagParcial
         };
         return(Json(retorno));
     }
     return(Json(null));
 }
Beispiel #17
0
 public ActionResult Imprimir(string codigo)
 {
     if (!String.IsNullOrWhiteSpace(codigo) && !Sistema.AvaliacaoUsuario.ContainsKey(codigo))
     {
         AvalAcademica acad = AvalAcademica.ListarPorCodigoAvaliacao(codigo);
         if (acad != null)
         {
             string    matricula = Helpers.Sessao.UsuarioMatricula;
             Professor professor = Professor.ListarPorMatricula(matricula);
             if (professor.CodProfessor == acad.CodProfessor)
             {
                 return(View(acad));
             }
         }
     }
     return(RedirectToAction("Index"));
 }
Beispiel #18
0
 public ActionResult DetalheIndividual(string codigo, string matricula)
 {
     if (!StringExt.IsNullOrWhiteSpace(codigo, matricula))
     {
         AvalAcademica acad = AvalAcademica.ListarPorCodigoAvaliacao(codigo);
         if (acad != null)
         {
             int codPessoaFisica       = Usuario.ObterPessoaFisica(matricula);
             AvalPessoaResultado model = acad.Avaliacao.AvalPessoaResultado.SingleOrDefault(r => r.CodPessoaFisica == codPessoaFisica);
             if (model != null)
             {
                 return(PartialView("_Individual", model));
             }
         }
     }
     return(null);
 }
Beispiel #19
0
        public ActionResult Academicas(string start, string end)
        {
            DateTime inicio  = DateTime.Parse(start);
            DateTime termino = DateTime.Parse(end);

            Usuario usuario = Sistema.UsuarioAtivo[Sessao.UsuarioMatricula].Usuario;
            List <AvalAcademica> lstAgendadas = AvalAcademica.ListarAgendadaPorUsuario(usuario, inicio, termino);

            IEnumerable <Evento> retorno = lstAgendadas.Select(a => new Evento
            {
                id    = a.Avaliacao.CodAvaliacao,
                title = a.Avaliacao.CodAvaliacao,
                start = a.Avaliacao.DtAplicacao.Value.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss"),
                end   = a.Avaliacao.DtTermino.Value.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss"),
                url   = Url.Action("Agendada", "Academica", new { codigo = a.Avaliacao.CodAvaliacao })
            });

            return(Json(retorno));
        }
Beispiel #20
0
 public ActionResult CarregarQuestoesDiscursivas(string codigo)
 {
     if (!String.IsNullOrWhiteSpace(codigo))
     {
         AvalAcademica acad    = AvalAcademica.ListarPorCodigoAvaliacao(codigo);
         var           retorno = from questao in acad.Avaliacao.Questao
                                 where questao.CodTipoQuestao == TipoQuestao.DISCURSIVA
                                 orderby questao.CodQuestao
                                 select new
         {
             codQuestao           = questao.CodQuestao,
             questaoEnunciado     = questao.Enunciado,
             questaoChaveResposta = questao.ChaveDeResposta,
             flagCorrecaoPendente = acad.Avaliacao.PessoaResposta.Where(r => r.CodQuestao == questao.CodQuestao && !r.RespNota.HasValue).Count() > 0
         };
         return(Json(retorno));
     }
     return(Json(null));
 }
Beispiel #21
0
        public ActionResult Agendar(string codigo)
        {
            if (String.IsNullOrWhiteSpace(codigo) || Sistema.AvaliacaoUsuario.ContainsKey(codigo))
            {
                return(RedirectToAction("Index"));
            }
            AvalAcademica acad = AvalAcademica.ListarPorCodigoAvaliacao(codigo);

            string    matricula = Helpers.Sessao.UsuarioMatricula;
            Professor professor = Professor.ListarPorMatricula(matricula);

            if (acad.CodProfessor == professor.CodProfessor)
            {
                var model = new AvaliacaoAgendarViewModel();

                model.Avaliacao = acad.Avaliacao;
                model.Turmas    = professor.TurmaDiscProfHorario.Select(d => d.Turma).Distinct().OrderBy(t => t.Curso.Descricao).ToList();
                model.Salas     = Sala.ListarOrdenadamente();

                return(View(model));
            }
            return(RedirectToAction("Index"));
        }
Beispiel #22
0
        public void Desistir(string codigo)
        {
            int codPessoaFisica = Usuario.ObterPessoaFisica(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;
                    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);
                }
            }
        }
Beispiel #23
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>     questoesTrocaObjetiva   = (List <QuestaoTema>)TempData[$"listaQuestoesPossiveisObj{codigoAvaliacao.ToUpper()}"];
            List <QuestaoTema>     questoesTrocaDiscursiva = (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.IsNullOrWhiteSpace(codigoAvaliacao))
            {
                AvalAcademica acad = AvalAcademica.ListarPorCodigoAvaliacao(codigoAvaliacao);
                if (acad != null)
                {
                    List <QuestaoTema> avalQuestTema = acad.Avaliacao.QuestaoTema;

                    QuestaoTema questao = null;

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

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

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

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

                        int index = indices.IndexOf(indice);

                        var atqNova = new AvalTemaQuestao();
                        atqNova.Ano              = acad.Avaliacao.Ano;
                        atqNova.Semestre         = acad.Avaliacao.Semestre;
                        atqNova.CodTipoAvaliacao = acad.Avaliacao.CodTipoAvaliacao;
                        atqNova.NumIdentificador = acad.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));
        }
        public string Gerar(string codigo, int[] justificaticoes, bool nova = false)
        {
            DateTime hoje = DateTime.Now;

            var           aval = new AvalAcadReposicao();
            AvalAcademica acad = AvalAcademica.ListarPorCodigoAvaliacao(codigo);

            aval.Avaliacao = new Avaliacao();

            aval.Avaliacao.TipoAvaliacao    = TipoAvaliacao.ListarPorCodigo(TipoAvaliacao.REPOSICAO);
            aval.Avaliacao.Ano              = hoje.Year;
            aval.Avaliacao.Semestre         = hoje.SemestreAtual();
            aval.Avaliacao.NumIdentificador = Avaliacao.ObterNumIdentificador(TipoAvaliacao.REPOSICAO);
            aval.Avaliacao.DtCadastro       = hoje;

            if (nova)
            {
                List <QuestaoTema>   lstQuestoes      = new List <QuestaoTema>();
                List <AvaliacaoTema> lstAvaliacaoTema = acad.Avaliacao.AvaliacaoTema.ToList();
                int      quantidadeObjetiva           = lstAvaliacaoTema.QteQuestoesPorTipo(TipoQuestao.OBJETIVA);
                int      quantidadeDiscursiva         = lstAvaliacaoTema.QteQuestoesPorTipo(TipoQuestao.DISCURSIVA);
                string[] temasCodigo    = lstAvaliacaoTema.Select(a => a.CodTema.ToString()).ToArray();
                int      codDificuldade = acad.Avaliacao.Questao.Max(a => a.CodDificuldade);

                if (quantidadeObjetiva > 0)
                {
                    lstQuestoes.AddRange(Questao.ListarPorDisciplina(acad.CodDisciplina, temasCodigo, codDificuldade, TipoQuestao.OBJETIVA, quantidadeObjetiva));
                }
                if (quantidadeDiscursiva > 0)
                {
                    lstQuestoes.AddRange(Questao.ListarPorDisciplina(acad.CodDisciplina, temasCodigo, codDificuldade, TipoQuestao.DISCURSIVA, quantidadeDiscursiva));
                }

                foreach (var temaCodigo in temasCodigo)
                {
                    var avalTema = new AvaliacaoTema();
                    avalTema.Tema = Tema.ListarPorCodigo(acad.CodDisciplina, int.Parse(temaCodigo));
                    foreach (var queTma in lstQuestoes.Where(q => q.CodTema == int.Parse(temaCodigo)))
                    {
                        var avalTemaQuestao = new AvalTemaQuestao();
                        avalTemaQuestao.QuestaoTema = queTma;
                        avalTema.AvalTemaQuestao.Add(avalTemaQuestao);
                    }
                    aval.Avaliacao.AvaliacaoTema.Add(avalTema);
                }
            }
            else
            {
                foreach (var avaliacaoTema in acad.Avaliacao.AvaliacaoTema)
                {
                    aval.Avaliacao.AvaliacaoTema.Add(new AvaliacaoTema
                    {
                        Tema            = avaliacaoTema.Tema,
                        AvalTemaQuestao = avaliacaoTema.AvalTemaQuestao.Select(a => new AvalTemaQuestao {
                            QuestaoTema = a.QuestaoTema
                        }).ToList()
                    });
                }
            }

            foreach (var codJustificacao in justificaticoes)
            {
                aval.Justificacao.Add(acad.Justificacoes.First(j => j.CodJustificacao == codJustificacao));
            }

            Repositorio.GetInstance().AvalAcadReposicao.Add(aval);
            Repositorio.Commit();

            return(nova ? Url.Action("Configurar", new { codigo = aval.Avaliacao.CodAvaliacao }) : Url.Action("Agendar", new { codigo = aval.Avaliacao.CodAvaliacao }));
        }
Beispiel #25
0
        public ActionResult Confirmar(FormCollection formCollection)
        {
            if (Sessao.UsuarioCategoriaCodigo != Categoria.PROFESSOR)
            {
                if (Session["UrlReferrer"] != null)
                {
                    return(Redirect(Session["UrlReferrer"].ToString()));
                }
                else
                {
                    return(RedirectToAction("Index", "Principal"));
                }
            }
            var acad = new AvalAcademica();

            if (formCollection.HasKeys())
            {
                DateTime hoje = DateTime.Now;

                /* Chave */
                acad.Avaliacao = new Avaliacao();
                acad.Avaliacao.TipoAvaliacao    = TipoAvaliacao.ListarPorCodigo(TipoAvaliacao.ACADEMICA);
                acad.Avaliacao.Ano              = hoje.Year;
                acad.Avaliacao.Semestre         = hoje.SemestreAtual();
                acad.Avaliacao.NumIdentificador = Avaliacao.ObterNumIdentificador(TipoAvaliacao.ACADEMICA);
                acad.Avaliacao.DtCadastro       = hoje;

                /* Professor */
                string matricula = Helpers.Sessao.UsuarioMatricula;
                acad.Professor = Professor.ListarPorMatricula(matricula);

                /* Dados */
                int codDisciplina = int.Parse(formCollection["ddlDisciplina"]);

                acad.CodDisciplina = codDisciplina;

                /* Dificuldade */
                int codDificuldade = int.Parse(formCollection["ddlDificuldade"]);

                /* Quantidade */
                int quantidadeObjetiva   = 0;
                int quantidadeDiscursiva = 0;

                if (formCollection["ddlTipo"] == "3")
                {
                    int.TryParse(formCollection["txtQteObjetiva"], out quantidadeObjetiva);
                    int.TryParse(formCollection["txtQteDiscursiva"], out quantidadeDiscursiva);
                }
                else if (formCollection["ddlTipo"] == "2")
                {
                    int.TryParse(formCollection["txtQteDiscursiva"], out quantidadeDiscursiva);
                }
                else if (formCollection["ddlTipo"] == "1")
                {
                    int.TryParse(formCollection["txtQteObjetiva"], out quantidadeObjetiva);
                }

                /* Temas */
                string[] temaCodigos = formCollection["ddlTemas"].Split(',');

                /* Questões */
                List <QuestaoTema> lstQuestoes = new List <QuestaoTema>();

                if (quantidadeObjetiva > 0)
                {
                    lstQuestoes.AddRange(Questao.ListarPorDisciplina(codDisciplina, temaCodigos, codDificuldade, TipoQuestao.OBJETIVA, quantidadeObjetiva));
                }
                if (quantidadeDiscursiva > 0)
                {
                    lstQuestoes.AddRange(Questao.ListarPorDisciplina(codDisciplina, temaCodigos, codDificuldade, TipoQuestao.DISCURSIVA, quantidadeDiscursiva));
                }

                foreach (var temaCodigo in temaCodigos)
                {
                    var avalTema = new AvaliacaoTema();
                    avalTema.Tema = Tema.ListarPorCodigo(codDisciplina, int.Parse(temaCodigo));
                    foreach (var questaoTema in lstQuestoes.Where(q => q.CodTema == int.Parse(temaCodigo)))
                    {
                        var avalTemaQuestao = new AvalTemaQuestao();
                        avalTemaQuestao.QuestaoTema = questaoTema;
                        avalTema.AvalTemaQuestao.Add(avalTemaQuestao);
                    }
                    acad.Avaliacao.AvaliacaoTema.Add(avalTema);
                }

                AvalAcademica.Inserir(acad);
                Lembrete.AdicionarNotificacao($"Avaliação Acadêmica {acad.Avaliacao.CodAvaliacao} gerada com sucesso.", Lembrete.POSITIVO);
                if (quantidadeObjetiva + quantidadeDiscursiva > acad.Avaliacao.Questao.Count)
                {
                    Lembrete.AdicionarNotificacao("Avaliação Acadêmica gerada com quantidade de questões inferior ao requisitado", Lembrete.NEGATIVO, 0);
                }
            }

            return(View(acad));
        }
Beispiel #26
0
        public ActionResult Agendar(string codigo, FormCollection form)
        {
            if (Sessao.UsuarioCategoriaCodigo != Categoria.PROFESSOR)
            {
                if (Session["UrlReferrer"] != null)
                {
                    return(Redirect(Session["UrlReferrer"].ToString()));
                }
                else
                {
                    return(RedirectToAction("Index", "Principal"));
                }
            }
            string codTurma    = form["ddlTurma"];
            string strCodSala  = form["ddlSala"];
            string data        = form["txtData"];
            string horaInicio  = form["txtHoraInicio"];
            string horaTermino = form["txtHoraTermino"];

            if (!StringExt.IsNullOrWhiteSpace(codTurma, strCodSala, data, horaInicio, horaTermino))
            {
                AvalAcademica acad = AvalAcademica.ListarPorCodigoAvaliacao(codigo);

                string    matricula = Sessao.UsuarioMatricula;
                Professor professor = Professor.ListarPorMatricula(matricula);

                if (acad.CodProfessor == professor.CodProfessor)
                {
                    // Turma
                    Turma turma = Turma.ListarPorCodigo(codTurma);
                    if (turma != null)
                    {
                        acad.Turma = turma;
                    }

                    // Sala
                    int codSala;
                    int.TryParse(strCodSala, out codSala);
                    Sala sala = Sala.ListarPorCodigo(codSala);
                    if (sala != null)
                    {
                        acad.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)
                    {
                        acad.Avaliacao.DtAplicacao = dtAplicacao;
                        acad.Avaliacao.Duracao     = Convert.ToInt32((dtAplicacaoTermino - acad.Avaliacao.DtAplicacao.Value).TotalMinutes);
                    }

                    acad.Avaliacao.FlagLiberada = false;

                    Repositorio.Commit();
                }
            }

            return(RedirectToAction("Agendada", new { codigo = codigo }));
        }
Beispiel #27
0
        public void RecuperarLembretes(string matricula)
        {
            if (!string.IsNullOrWhiteSpace(matricula))
            {
                if (!UsuarioLembreteVisualizado.ContainsKey(matricula))
                {
                    UsuarioLembreteVisualizado[matricula] = new List <string>();
                }

                if (!UsuarioLembrete.ContainsKey(matricula))
                {
                    UsuarioLembrete[matricula] = new Dictionary <string, object>();
                }

                Usuario usuario = Sistema.UsuarioAtivo[matricula].Usuario;
                if (!UsuarioLembreteVisualizado[matricula].Contains(LEMBRETE_INSTITUCIONAL))
                {
                    if (!UsuarioLembrete[matricula].ContainsKey(LEMBRETE_INSTITUCIONAL))
                    {
                        if (AvalAvi.ListarPorUsuario(usuario.Matricula).Count > 0)
                        {
                            UsuarioLembrete[matricula][LEMBRETE_INSTITUCIONAL] = new Dictionary <string, string>()
                            {
                                { "Id", LEMBRETE_INSTITUCIONAL },
                                { "Mensagem", "Há Av. Institucionais em andamento no momento." },
                                { "Botao", "Visualizar" },
                                { "Url", "/institucional/andamento" }
                            };
                        }
                    }
                }
                if (!UsuarioLembreteVisualizado[matricula].Contains(LEMBRETE_ACADEMICA))
                {
                    if (!UsuarioLembrete[matricula].ContainsKey(LEMBRETE_ACADEMICA))
                    {
                        if (AvalAcademica.ListarAgendadaPorUsuario(usuario, DateTime.Now, DateTime.Now.AddHours(24)).Count > 0)
                        {
                            UsuarioLembrete[matricula][LEMBRETE_ACADEMICA] = new Dictionary <string, string>()
                            {
                                { "Id", LEMBRETE_ACADEMICA },
                                { "Mensagem", "Há Avaliações Acadêmicas agendadas para as próximas 24 horas." },
                                { "Botao", "Visualizar" },
                                { "Url", "/principal/agenda" }
                            };
                        }
                    }
                }
                if (!UsuarioLembreteVisualizado[matricula].Contains(LEMBRETE_CERTIFICACAO))
                {
                    if (!UsuarioLembrete[matricula].ContainsKey(LEMBRETE_CERTIFICACAO))
                    {
                        if (AvalCertificacao.ListarAgendadaPorUsuario(usuario, DateTime.Now, DateTime.Now.AddHours(24)).Count > 0)
                        {
                            UsuarioLembrete[matricula][LEMBRETE_CERTIFICACAO] = new Dictionary <string, string>()
                            {
                                { "Id", LEMBRETE_CERTIFICACAO },
                                { "Mensagem", "Há Avaliações de Certificações agendadas para as próximas 24 horas." },
                                { "Botao", "Visualizar" },
                                { "Url", "/principal/agenda" }
                            };
                        }
                    }
                }
                if (!UsuarioLembreteVisualizado[matricula].Contains(LEMBRETE_REPOSICAO))
                {
                    if (!UsuarioLembrete[matricula].ContainsKey(LEMBRETE_REPOSICAO))
                    {
                        if (AvalAcadReposicao.ListarAgendadaPorUsuario(usuario, DateTime.Now, DateTime.Now.AddHours(24)).Count > 0)
                        {
                            UsuarioLembrete[matricula][LEMBRETE_REPOSICAO] = new Dictionary <string, string>()
                            {
                                { "Id", LEMBRETE_REPOSICAO },
                                { "Mensagem", "Há Reposições agendadas para as próximas 24 horas." },
                                { "Botao", "Visualizar" },
                                { "Url", "/principal/agenda" }
                            };
                        }
                    }
                }
                if (Context != null)
                {
                    Clients.Client(Context.ConnectionId).receberLembretes(UsuarioLembrete[matricula]);
                }
            }
        }
Beispiel #28
0
        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"));
        }