// GET: Practice/Practice public ActionResult Index(int? idSimulado, QuestaoCortesia questaoCortesia) { if (questaoCortesia.NumQuestoesTotal > 0) { return View(questaoCortesia); } QuestaoCortesia questao; if (idSimulado == null) { // cria um novo simulado var simulado = cortesia.GetSimulado(cortesia.CriarSimulado()); var alternativa = simulado.QuestoesSimuladas.ToList().OrderBy(x => x.Id).First(); questao = cortesia.GetQuestao(alternativa.IdCortesia, alternativa.IdQuestao); } else { questao = cortesia.GetQuestao((int)idSimulado); } // retorna view com a primeira questao return View(questao); }
/// <summary> /// Retorna uma questao do simulado (CorSimulado) /// </summary> /// <param name="idCortesia"></param> /// <param name="idQuestao"></param> /// <returns></returns> public QuestaoCortesia GetQuestao(int idCortesia, int idQuestao) { // simulados desta cortesia List<CorSimulado> simulados; simulados = serviceSimulado.Listar().Where(x => x.IdCortesia == idCortesia).OrderBy(x => x.Id).ToList(); if (simulados.Count() == 0) { // gera um novo simulado simulados = simuladoCor.GetSimulados(idCortesia).OrderBy(x => x.Id).ToList(); } var atual = simulados.Where(x => x.IdQuestao == idQuestao).FirstOrDefault(); var questao = new QuestaoCortesia(); questao.QuestaoUsuario = atual; questao.NumQuestoesTotal = simulados.Count(); questao.NumQuestaoAtual = simulados.IndexOf(atual) + 1; questao.PrimeiraQuestao = (questao.NumQuestaoAtual == 1); questao.UltimaQuestao = (questao.NumQuestaoAtual == questao.NumQuestoesTotal); questao.QuestoesNaoRespondidas = simulados.Where(x => x.ResponderDepois == true).OrderBy(x => x.Id).AsEnumerable(); questao.Concluir = serviceCortesia.Find(idCortesia).Concluir; return questao; }