예제 #1
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));
        }
예제 #2
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));
        }
예제 #3
0
        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 }));
        }
예제 #4
0
        public ActionResult Confirmar(FormCollection formCollection)
        {
            if (!formCollection.HasKeys())
            {
                return(RedirectToAction("Index"));
            }

            if (!String.IsNullOrWhiteSpace(formCollection["chkAvalicoesSeparadas"]))
            {
                string[] disciplinas = formCollection["ddlDisciplinas"].Split(',');
                foreach (var disciplina in disciplinas)
                {
                    var auto = new AvalAuto();

                    DateTime hoje = DateTime.Now;

                    /* Chave */
                    auto.Avaliacao = new Avaliacao();
                    auto.Avaliacao.TipoAvaliacao    = TipoAvaliacao.ListarPorCodigo(TipoAvaliacao.AUTOAVALIACAO);
                    auto.Avaliacao.Ano              = hoje.Year;
                    auto.Avaliacao.Semestre         = hoje.SemestreAtual();
                    auto.Avaliacao.NumIdentificador = Avaliacao.ObterNumIdentificador(TipoAvaliacao.AUTOAVALIACAO);

                    /* Pessoa */
                    auto.CodPessoaFisica = Sistema.UsuarioAtivo[Sessao.UsuarioMatricula].Usuario.CodPessoaFisica;

                    /* Dados */
                    List <int> dificuldades = new List <int>();

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

                    /* Quantidade */
                    int qteObjetiva   = 0;
                    int qteDiscursiva = 0;
                    if (formCollection["ddlTipo"] == "3")
                    {
                        int.TryParse(formCollection["txtQteObjetiva" + disciplina], out qteObjetiva);
                        int.TryParse(formCollection["txtQteDiscursiva" + disciplina], out qteDiscursiva);
                    }
                    else if (formCollection["ddlTipo"] == "2")
                    {
                        int.TryParse(formCollection["txtQteDiscursiva" + disciplina], out qteDiscursiva);
                    }
                    else if (formCollection["ddlTipo"] == "1")
                    {
                        int.TryParse(formCollection["txtQteObjetiva" + disciplina], out qteObjetiva);
                    }

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

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

                    if (qteObjetiva > 0)
                    {
                        questoes.AddRange(Questao.ListarPorDisciplina(int.Parse(disciplina), temas, codDificuldade, TipoQuestao.OBJETIVA, qteObjetiva));
                    }

                    if (qteDiscursiva > 0)
                    {
                        questoes.AddRange(Questao.ListarPorDisciplina(int.Parse(disciplina), temas, codDificuldade, TipoQuestao.DISCURSIVA, qteDiscursiva));
                    }

                    foreach (var tema in temas)
                    {
                        var avalTema = new AvaliacaoTema();
                        avalTema.Tema = Tema.ListarPorCodigo(int.Parse(disciplina), int.Parse(tema));
                        foreach (var questaoTema in questoes.Where(q => q.CodTema == int.Parse(tema)))
                        {
                            var avalTemaQuestao = new AvalTemaQuestao();
                            avalTemaQuestao.QuestaoTema = questaoTema;
                            avalTema.AvalTemaQuestao.Add(avalTemaQuestao);
                        }
                        auto.Avaliacao.AvaliacaoTema.Add(avalTema);
                    }

                    auto.Avaliacao.DtCadastro = hoje;
                    auto.CodDificuldade       = dificuldades.Max();

                    AvalAuto.Inserir(auto);
                    Lembrete.AdicionarNotificacao($"Autoavaliação {auto.Avaliacao.CodAvaliacao} gerada com sucesso.", Lembrete.POSITIVO);
                    if (qteObjetiva + qteDiscursiva > auto.Avaliacao.Questao.Count)
                    {
                        Lembrete.AdicionarNotificacao("Autoavaliação de " + auto.Disciplina.First().Descricao + " gerada com quantidade de questões inferior ao requisitado", Lembrete.NEGATIVO, 0);
                    }
                }
                return(RedirectToAction("Realizar"));
            }
            else
            {
                var auto = new AvalAuto();

                DateTime hoje = DateTime.Now;

                /* Chave */
                auto.Avaliacao = new Avaliacao();
                auto.Avaliacao.TipoAvaliacao    = TipoAvaliacao.ListarPorCodigo(TipoAvaliacao.AUTOAVALIACAO);
                auto.Avaliacao.Ano              = hoje.Year;
                auto.Avaliacao.Semestre         = hoje.SemestreAtual();
                auto.Avaliacao.NumIdentificador = Avaliacao.ObterNumIdentificador(TipoAvaliacao.AUTOAVALIACAO);

                /* Pessoa */
                auto.CodPessoaFisica = Sistema.UsuarioAtivo[Sessao.UsuarioMatricula].Usuario.CodPessoaFisica;

                string[] disciplinas = formCollection["ddlDisciplinas"].Split(',');
                /* Dados */
                List <int> dificuldades               = new List <int>();
                int        quantidadeTotalObjetivas   = 0;
                int        quantidadeTotalDiscursivas = 0;
                foreach (var disciplina in disciplinas)
                {
                    /* Dificuldade */
                    int codDificuldade = int.Parse(formCollection["ddlDificuldade" + disciplina]);
                    dificuldades.Add(codDificuldade);

                    /* Quantidade */
                    int qteObjetiva   = 0;
                    int qteDiscursiva = 0;
                    if (formCollection["ddlTipo"] == "3")
                    {
                        int.TryParse(formCollection["txtQteObjetiva" + disciplina], out qteObjetiva);
                        int.TryParse(formCollection["txtQteDiscursiva" + disciplina], out qteDiscursiva);
                        quantidadeTotalObjetivas   += qteObjetiva;
                        quantidadeTotalDiscursivas += qteDiscursiva;
                    }
                    else if (formCollection["ddlTipo"] == "2")
                    {
                        int.TryParse(formCollection["txtQteDiscursiva" + disciplina], out qteDiscursiva);
                        quantidadeTotalDiscursivas += qteDiscursiva;
                    }
                    else if (formCollection["ddlTipo"] == "1")
                    {
                        int.TryParse(formCollection["txtQteObjetiva" + disciplina], out qteObjetiva);
                        quantidadeTotalObjetivas += qteObjetiva;
                    }

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

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

                    if (qteObjetiva > 0)
                    {
                        questoes.AddRange(Questao.ListarPorDisciplina(int.Parse(disciplina), temas, codDificuldade, TipoQuestao.OBJETIVA, qteObjetiva));
                    }

                    if (qteDiscursiva > 0)
                    {
                        questoes.AddRange(Questao.ListarPorDisciplina(int.Parse(disciplina), temas, codDificuldade, TipoQuestao.DISCURSIVA, qteDiscursiva));
                    }

                    foreach (var tema in temas)
                    {
                        var avalTema = new AvaliacaoTema();
                        avalTema.Tema = Tema.ListarPorCodigo(int.Parse(disciplina), int.Parse(tema));
                        foreach (var questaoTema in questoes.Where(q => q.CodTema == int.Parse(tema)))
                        {
                            var avalTemaQuestao = new AvalTemaQuestao();
                            avalTemaQuestao.QuestaoTema = questaoTema;
                            avalTema.AvalTemaQuestao.Add(avalTemaQuestao);
                        }
                        auto.Avaliacao.AvaliacaoTema.Add(avalTema);
                    }
                }

                auto.Avaliacao.DtCadastro = hoje;
                auto.CodDificuldade       = dificuldades.Max();

                AvalAuto.Inserir(auto);
                Lembrete.AdicionarNotificacao($"Autoavaliação {auto.Avaliacao.CodAvaliacao} gerada com sucesso.", Lembrete.POSITIVO);
                if (quantidadeTotalDiscursivas + quantidadeTotalObjetivas > auto.Avaliacao.Questao.Count)
                {
                    Lembrete.AdicionarNotificacao("Autoavaliação gerada com quantidade de questões inferior ao requisitado", Lembrete.NEGATIVO, 0);
                }
                return(View(auto));
            }
        }
예제 #5
0
        public ActionResult Confirmar(FormCollection formCollection)
        {
            var cert = new AvalCertificacao();

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

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

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

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

                cert.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[] temasCodigo = formCollection["ddlTemas"].Split(',');

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

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

                foreach (var temaCodigo in temasCodigo)
                {
                    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);
                    }
                    cert.Avaliacao.AvaliacaoTema.Add(avalTema);
                }

                AvalCertificacao.Inserir(cert);
            }

            return(RedirectToAction("Configurar", new { codigo = cert.Avaliacao.CodAvaliacao }));
        }