public async Task <ActionResult> Create(QuizzesViewModel model) { //try //{ var request = CreateRequestToService(HttpMethod.Post, $"/api/Quizzes", model); var response = await HttpClient.SendAsync(request); var jsonString = await response.Content.ReadAsStringAsync(); var questions = JsonConvert.DeserializeObject <List <ApiQuestions> >(jsonString); var request2 = CreateRequestToService(HttpMethod.Post, $"/api/Quizzes/Answers", questions); var response2 = await HttpClient.SendAsync(request2); var jsonString2 = await response2.Content.ReadAsStringAsync(); var answers = JsonConvert.DeserializeObject <List <ApiAnswers> >(jsonString2); model.questions = questions; model.answers = answers; return(RedirectToAction("TakeQuiz", model)); //} //catch //{ // return View(); //} }
/// <summary> /// Gets all the staff. /// </summary> /// <returns></returns> public List <QuizzesViewModel> GetQuizByCourse(int courseId, int studentId) { List <QuizzesViewModel> models = new List <QuizzesViewModel>(); try { //Get modules by course List <Module> module = ModuleManager.GetModulesByCourse(courseId); foreach (var item in module) { List <Quiz> quizzes = QuizManager.GetQuizzesByModule(item.Id); if (quizzes.Count != 0)//If we have quizzes for the module { foreach (var item2 in quizzes) { QuizzesViewModel viewmodel = new QuizzesViewModel(); viewmodel = ObjectMapper.Map <Model.Entities.Quiz, QuizzesViewModel>(item2); viewmodel.AttemptsSoFar = QuizEntryManager.NumAttemptsSoFar(item2.Id, studentId); //set Up module and course2. viewmodel.ModuleId = item.Id; viewmodel.ModuleTitle = item.Title; viewmodel.CourseId = item.Course_Id; models.Add(viewmodel); } } } } catch (Exception ex) { ExceptionManager.HandleException(ex, PolicyNameType.ExceptionReplacing); } return(models); }
public QuizzesViewModel GetQuizById(int quizId) { QuizzesViewModel quiz = new QuizzesViewModel(); quiz = ObjectMapper.Map <Model.Entities.Quiz, QuizzesViewModel>(QuizManager.FindBy(quizId)); return(quiz); }
/// <summary> /// Determines if the quiz is available to the student, depending of the number of attempts /// </summary> /// <param name="quizId"></param> /// <param name="studentId"></param> /// <returns></returns> public bool QuizAvailableToStudent(int quizId, int studentId) { QuizzesViewModel quiz = new QuizzesViewModel(); quiz = ObjectMapper.Map <Model.Entities.Quiz, QuizzesViewModel>(QuizManager.FindBy(quizId)); return(quiz.MaxAttemptsAllowed < QuizEntryManager.NumAttemptsSoFar(quizId, studentId)); }
public static QuizzesViewModel ToQuizzesViewModel(this IQueryable <Quiz> quizzes, IQuestionService questions, IQuizService quizService, IQuizCategoryService categories, int?catId) { var vm = new QuizzesViewModel(); vm.QuizCategories = categories.GetAll().ToQuizCategoriesViewModel(quizService.GetPublicQuizzes(), catId); vm.Filter = QuizFilter.Newest; vm.TopQuizzes = quizService.GetBy(QuizFilter.Rating, descending: true, count: 10).Select(x => new TopListItem() { Id = x.Id, Name = x.Name }).ToList(); vm.SelectedCategoryId = catId.HasValue ? catId.Value: -1; vm.SearchPlaceHolder = vm.SelectedCategoryId > -1 ? "Search in " + categories.Get(vm.SelectedCategoryId).Name : "Search here"; const int pageSize = 10; var quizCount = quizzes.Count(); if (quizCount <= pageSize) { vm.PageCount = 1; } else { vm.PageCount = (int)Math.Ceiling((double)quizCount / pageSize); } vm.Quizzes = quizzes.Take(pageSize).ToQuizViewModels(); return(vm); }
/// <summary> /// Creates the quiz. /// </summary> /// <param name="createQuizViewModel">The create quiz view model.</param> public void CreateQuiz(QuizzesViewModel createQuizViewModel) { try { if (createQuizViewModel != null) { Quiz quiz = ObjectMapper.Map <QuizzesViewModel, Model.Entities.Quiz>(createQuizViewModel); quiz = QuizManager.Add(quiz); if (quiz != null && quiz.Id != 0) { ModuleQuizManager.Add(new ModuleQuiz(quiz.Id, createQuizViewModel.ModuleId)); } } } catch (Exception ex) { ExceptionManager.HandleException(ex, PolicyNameType.ExceptionReplacing); } }
/// <summary> /// Creates the quiz view model. /// </summary> /// <param name="quiz">The quiz.</param> /// <param name="objectMapper">The object mapper.</param> /// <returns></returns> public static QuizzesViewModel CreateFromDomainModel(Quiz quiz, IObjectMapperAdapter objectMapper) { QuizzesViewModel viewmodel = objectMapper.Map <Model.Entities.Quiz, QuizzesViewModel>(quiz); if (viewmodel != null) { Module quizModule = null; try { quizModule = quiz.ModuleQuizs.FirstOrDefault().Module; } catch (Exception) { } if (quizModule != null) { viewmodel.ModuleId = quizModule.Id; viewmodel.ModuleTitle = quizModule.Title; viewmodel.CourseId = quizModule.Course_Id; } } return(viewmodel); }
public IActionResult Avancar(int idPergunta, int idResposta) { QuizzesViewModel quizzes = new QuizzesViewModel(); string cookieValueFromReq = Request.Cookies["quizz"]; quizzes = JsonSerializer.Deserialize <QuizzesViewModel>(cookieValueFromReq); if (quizzes.Perguntas.FirstOrDefault(p => p.Id_Pergunta == idPergunta).Resposta.Id_Resposta == idResposta) { quizzes.Pontuacao += 1; } quizzes.Passo += 1; CookieOptions option = new CookieOptions(); option.Expires = DateTime.Now.AddHours(2); string jsonString = JsonSerializer.Serialize(quizzes); Response.Cookies.Append("quizz", jsonString, option); return(View("Index", quizzes)); }
public IActionResult Index(int id) { QuizzesViewModel quizzes = new QuizzesViewModel(); quizzes.Passo = 0; quizzes.Pontuacao = 0; using (var conn = _conexao.AbrirConexao()) { var querySQL = $"SELECT * FROM QUIZZES WHERE ID_QUIZ = { id };"; quizzes = conn.QueryFirstOrDefault <QuizzesViewModel>(querySQL); quizzes.Perguntas = new List <PerguntasViewModel>(); querySQL = $"SELECT * FROM PERGUNTAS WHERE ID_QUIZ = { id };"; quizzes.Perguntas = conn.Query <PerguntasViewModel>(querySQL).ToList(); for (int i = 0; i < quizzes.Perguntas.Count; i++) { querySQL = $"SELECT * FROM ALTERNATIVAS WHERE ID_PERGUNTA = { quizzes.Perguntas[i].Id_Pergunta };"; quizzes.Perguntas[i].Alternativas = conn.Query <AlternativasViewModel>(querySQL).ToList(); querySQL = $"SELECT * FROM RESPOSTA WHERE ID_PERGUNTA = { quizzes.Perguntas[i].Id_Pergunta };"; quizzes.Perguntas[i].Resposta = conn.QueryFirstOrDefault <RespostaViewModel>(querySQL); } } CookieOptions option = new CookieOptions(); option.Expires = DateTime.Now.AddHours(2); string jsonString = JsonSerializer.Serialize(quizzes); Response.Cookies.Append("quizz", jsonString, option); return(View(quizzes)); }
public IActionResult Criar([FromForm] QuizzesViewModel model) { try { PerfilViewModel perfil = new PerfilViewModel(); if (null != HttpContext.User.Claims.FirstOrDefault(p => p.ValueType == "Id_Perfil").Value) { perfil.Id_Perfil = int.Parse(HttpContext.User.Claims.FirstOrDefault(p => p.ValueType == "Id_Perfil").Value); } ListaQuizzesViewModel listaQuizzes; using (var conn = _conexao.AbrirConexao()) { var querySQLselect = $"SELECT Id_Listaquiz FROM Listaquizzes WHERE Id_Perfil = { perfil.Id_Perfil };"; listaQuizzes = conn.QueryFirstOrDefault <ListaQuizzesViewModel>(querySQLselect); } if (listaQuizzes == null) { listaQuizzes = new ListaQuizzesViewModel(); var querySQLinsert = $"INSERT INTO Listaquizzes (Id_Perfil) VALUES ({ perfil.Id_Perfil });"; using (var conn = _conexao.AbrirConexao()) { var reader = conn.ExecuteReader(querySQLinsert); listaQuizzes.Id_ListaQuiz = (int)((MySqlCommand)((IWrappedDataReader)reader).Command).LastInsertedId; } } QuizzesViewModel quizzes = model; try { var path = AppDomain.CurrentDomain.BaseDirectory.Substring(0, AppDomain.CurrentDomain.BaseDirectory.IndexOf("bin")); string uniqueFileName = null; if (quizzes.ImagemFile != null) { string uploadsFolder = Path.Combine(path, "wwwroot\\images\\quiz\\"); uniqueFileName = Guid.NewGuid().ToString() + "_" + quizzes.ImagemFile.FileName; quizzes.Imagem = "/images/quiz/" + uniqueFileName; string filePath = Path.Combine(uploadsFolder, uniqueFileName); using (var fileStream = new FileStream(filePath, FileMode.Create)) { quizzes.ImagemFile.CopyTo(fileStream); } } } catch (Exception e) { } using (var conn = _conexao.AbrirConexao()) { var querySQLinsert = "INSERT INTO QUIZZES (TITULO, IMAGEM, DESCRICAO, ID_LISTAQUIZ, ID_CATEGORIA)" + "VALUES ('{0}', '{1}', '{2}', {3}, {4})"; querySQLinsert = string.Format(querySQLinsert, quizzes.Titulo, quizzes.Imagem ?? "", quizzes.Descricao, listaQuizzes.Id_ListaQuiz, quizzes.Categoria.Id_Categoria); var reader = conn.ExecuteReader(querySQLinsert); quizzes.Id_Quiz = (int)((MySqlCommand)((IWrappedDataReader)reader).Command).LastInsertedId; } foreach (var pergunta in quizzes.Perguntas) { if (pergunta.Titulo != null) { using (var conn = _conexao.AbrirConexao()) { var querySQLinsert = "INSERT INTO PERGUNTAS (TITULO, ID_QUIZ) VALUES ('{0}', {1})"; querySQLinsert = string.Format(querySQLinsert, pergunta.Titulo, quizzes.Id_Quiz); var reader = conn.ExecuteReader(querySQLinsert); pergunta.Id_Pergunta = (int)((MySqlCommand)((IWrappedDataReader)reader).Command).LastInsertedId; reader.Close(); foreach (var alternativa in pergunta.Alternativas) { if (alternativa.Alternativa != null) { querySQLinsert = "INSERT INTO ALTERNATIVAS (ID_PERGUNTA, ALTERNATIVA) VALUES ({0}, '{1}')"; querySQLinsert = string.Format(querySQLinsert, pergunta.Id_Pergunta, alternativa.Alternativa); reader = conn.ExecuteReader(querySQLinsert); alternativa.Id_Alternativa = (int)((MySqlCommand)((IWrappedDataReader)reader).Command).LastInsertedId; reader.Close(); if (alternativa == pergunta.Alternativas.First()) { querySQLinsert = "INSERT INTO RESPOSTA (ID_PERGUNTA, ID_ALTERNATIVA) VALUES ({0}, {1})"; querySQLinsert = string.Format(querySQLinsert, pergunta.Id_Pergunta, alternativa.Id_Alternativa); conn.Execute(querySQLinsert); } } } } } } } catch (Exception e) { throw; } return(RedirectToAction("Index", "Home")); }
// GET: Quizes/Create public async Task <ActionResult> Create() { QuizzesViewModel quizzes = new QuizzesViewModel(); return(View(quizzes)); }