示例#1
0
        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();
            //}
        }
示例#2
0
        /// <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);
        }
示例#3
0
        public QuizzesViewModel GetQuizById(int quizId)
        {
            QuizzesViewModel quiz = new QuizzesViewModel();

            quiz = ObjectMapper.Map <Model.Entities.Quiz, QuizzesViewModel>(QuizManager.FindBy(quizId));

            return(quiz);
        }
示例#4
0
        /// <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));
        }
示例#5
0
        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);
        }
示例#6
0
 /// <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);
        }
示例#8
0
        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));
        }
示例#9
0
        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));
        }
示例#10
0
        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"));
        }
示例#11
0
        // GET: Quizes/Create
        public async Task <ActionResult> Create()
        {
            QuizzesViewModel quizzes = new QuizzesViewModel();

            return(View(quizzes));
        }