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