public ActionResult Desfazer(string codigoAvaliacao, int tipoQuestao, 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.IsNullOrWhiteSpace(codigoAvaliacao)) { int codQuestaoRecente = recentes[indices.IndexOf(indice)]; QuestaoTema questao = null; if (tipoQuestao == TipoQuestao.OBJETIVA) { questao = questoesTrocaObj.FirstOrDefault(qt => qt.CodQuestao == codQuestaoRecente); if (questao == null) { questao = antigas[indices.IndexOf(indice)].QuestaoTema; } } else if (tipoQuestao == TipoQuestao.DISCURSIVA) { questao = questoesTrocaDisc.FirstOrDefault(qt => qt.CodQuestao == codQuestaoRecente); if (questao == null) { questao = antigas[indices.IndexOf(indice)].QuestaoTema; } } if (questao != null) { novas[indices.IndexOf(indice)].QuestaoTema = questao; ViewData["Index"] = indice; return(PartialView("_QuestaoConfigurar", questao.Questao)); } } return(Json(String.Empty)); }
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)); }