Beispiel #1
0
        private void SetNextQuestion(int pos)
        {
            answersHolder.Controls.Clear();
            questionHolder.Controls.Clear();
            QuizAnswers answer;
            Point       p = new Point(30, 0);

            //dynamically setting the answers for each question
            for (int i = 0; i < quiz.GetQuestionAnswersLength(pos); i++)
            {
                answer          = new QuizAnswers(pos, i);
                answer.Location = p;
                answer.setAnswer("" + i, quiz.GetAnswerTitle(pos, i));
                if (i % 2 == 0)
                {
                    answer.BackColor = Color.FromArgb(26, 32, 40);
                }
                else
                {
                    answer.BackColor = Color.FromArgb(37, 46, 69);
                }
                answersHolder.Controls.Add(answer);
                p.Y += answer.Height;
            }
            string       q  = quiz.GetQuestionTitle(pos);
            QuizQuestion qu = new QuizQuestion();

            qu.setQuestion(q);
            questionHolder.Controls.Add(qu);
        }
Beispiel #2
0
        public IActionResult quizVerifier([FromBody] QuizAnswers quizAnswers)
        {
            var quiz = courses[quizAnswers.quizId].Contents.Find(e => e.Name.Equals(quizAnswers.courseItemName)) as TestCourseItem;

            if (quiz == null)
            {
                return(new NotFoundObjectResult("Course item not found for particular courseId"));
            }
            QuizResults quizResults = new QuizResults();

            for (int i = 0; i < quiz.quizEntries.Count; i++)
            {
                var e = quiz.quizEntries[i];
                if (e.Answer.Equals(quizAnswers.answers[i]))
                {
                    quizResults.correctOnes.Add(i);
                }
                else
                {
                    quizResults.invalidOnes.Add(i, e.Answer);
                }
            }

            return(new OkObjectResult(quizResults));
        }
 // Use this for initialization
 void Start()
 {
     quizAnswers = FindObjectOfType <QuizAnswers>();
     if (!quizAnswers)
     {
         quizAnswers = gameObject.AddComponent <QuizAnswers>();
     }
 }
Beispiel #4
0
        protected void Page_Load(object sender, EventArgs e)
        {
            // Get the category from the URL
            var questionsCateg = Request.QueryString["category"];

            // Get the user ID from the Session
            // This is added when the user logs in
            var userId = int.Parse(Session["userId"]?.ToString() ?? "1");

            // Take the list of answers from the session
            var answersList = (List <QuizAnswer>)Session["answers" + questionsCateg];

            // If time expired
            if (answersList == null)
            {
                totalAnswersLabel.Text       = "0";
                correctAnswersLabel.Text     = "0";
                RetakQuizButton.NavigateUrl  = "TakeQuiz.aspx?category=" + questionsCateg;
                notCompletedInTimeLabel.Text = "Quiz was not finished in specified amount of time";
                return;
            }

            // Connect to database
            using (var myConnection = new SqlConnection(System.Configuration.ConfigurationManager
                                                        .ConnectionStrings["localdbConnectionString1"].ConnectionString))
            {
                myConnection.Open();

                // Remove previous entry of the score for this quiz
                string deleteQuery   = "DELETE FROM [dbo].[QuizzResult] WHERE UserId = @UserId and Category = @Category";
                var    deleteCommand = new SqlCommand(deleteQuery, myConnection);
                deleteCommand.Parameters.AddWithValue("UserId", userId);
                deleteCommand.Parameters.AddWithValue("Category", questionsCateg.ToUpper());

                deleteCommand.ExecuteNonQuery();

                // Insert new entry with the score for this quiz
                // !!! The functionality for showing the score is not implemented yet !!!
                string     query   = "INSERT INTO [dbo].[QuizzResult](UserId, Category, CorrectAnswers, TotalAnswers, Score) VALUES (@UserId, @Category, @CorrectAnswers, @TotalAnswers, @Score)";
                SqlCommand command = new SqlCommand(query, myConnection);

                //To prevent sql injection
                command.Parameters.AddWithValue("UserId", userId);
                command.Parameters.AddWithValue("Category", questionsCateg.ToUpper());
                command.Parameters.AddWithValue("CorrectAnswers", answersList.Count(x => x.AnswerIsCorrect).ToString());
                command.Parameters.AddWithValue("TotalAnswers", answersList.Count.ToString());
                command.Parameters.AddWithValue("Score", answersList.Count(x => x.AnswerIsCorrect) / answersList.Count * 10);

                command.ExecuteNonQuery();
            }

            // Update data for the view
            QuizAnswers.DataSource = answersList;
            QuizAnswers.DataBind();
            RetakQuizButton.NavigateUrl = "TakeQuiz.aspx?category=" + questionsCateg;
            totalAnswersLabel.Text      = answersList.Count.ToString();
            correctAnswersLabel.Text    = answersList.Count(x => x.AnswerIsCorrect).ToString();
        }
Beispiel #5
0
        public async Task <IActionResult> QuizAnswers(QuizAnswers quizAnswers)
        {
            ClaimsPrincipal currentUser     = this.User;
            var             currentUserName = currentUser.FindFirst(ClaimTypes.NameIdentifier).Value;
            var             user            = await userManager.FindByIdAsync(currentUserName);

            var answer = string.Concat(quizAnswers.Ans1, quizAnswers.Ans2, quizAnswers.Ans3, quizAnswers.Ans4, quizAnswers.Ans5);
            var result = quizService.ProcessAnswers(answer, user);

            return(RedirectToAction("Index", "Home"));
        }
        private void SetQuizList(int Id)
        {
            var QuizId = Repository.FindById(Id);

            Quizes = Quizes.Where(p => p.CatId == Id).ToList();
            foreach (var item in Quizes)
            {
                QuizAnswers = RepositoryAnswers.GetAll().ToList();
                var s = QuizAnswers.Where(p => p.Id == item.Id);
                QuizAnswersList.AddRange(s);
            }
        }
Beispiel #7
0
        private void StoreAnswer(bool isItRight, int answerNumber)
        {
            QuizAnswers qa = new QuizAnswers();

            qa.AnswerID   = answerNumber;
            qa.Date       = DateTime.Today;
            qa.GameID     = CurrentGameID;
            qa.PlayerID   = CurrentPlayer;
            qa.QuestionID = quizQuestions[NumOfQuestions].QuestionID;
            qa.Result     = isItRight;
            qa.AnswerID   = answerNumber;

            quizAnswers.Add(qa);
        }
Beispiel #8
0
        public async Task GetAnswers()
        {
            if (initializedAns == true)
            {
                return;
            }
            IsBusy = true;
            IEnumerable <QuizAnswer> answers = await quizService.GetAnswers();

            // очищаем список
            while (QuizAnswers.Any())
            {
                QuizAnswers.RemoveAt(Quizzes.Count - 1);
            }

            // добавляем загруженные данные
            foreach (QuizAnswer f in answers)
            {
                QuizAnswers.Add(f);
            }
            IsBusy         = false;
            initializedAns = true;
        }
Beispiel #9
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            var dataFile = Path.Combine(_curFolder, _dataFile);

            if (!File.Exists(dataFile))
            {
                MessageBox.Show($"Impossibile trovare il file {dataFile}");
                return;
            }

            #region verifica presenza quiz da ripristinare
            var resumedFile = Path.Combine(_curFolder, _answFile);
            if (File.Exists(resumedFile))
            {
                //resume da verifica interrotta
                _quizAnswers  = JsonConvert.DeserializeObject <QuizAnswers>(File.ReadAllText(resumedFile));
                _curFormIndex = _quizAnswers.SavedAnswers.Count;
            }
            #endregion

            Quiz quiz = JsonConvert.DeserializeObject <Quiz>(File.ReadAllText(dataFile));

            //controllo inizio verifica
            _curTime = Utils.GetNistTime();
            var minStartTime = quiz.StartDateTime;
            if (_curTime < minStartTime)
            {
                MessageBox.Show($"La verifica può essere eseguita non prima della data: {minStartTime}");
                Application.Exit();
            }

            _totalForms = quiz.Forms.Count;

            UpdateTitle();

            _randomForms     = quiz.RandomForms;
            _randomQuestions = quiz.RandomQuestions;
            _allowBack       = quiz.AllowBack;
            _totalMinutes    = quiz.TimeLimit;

            if (_randomForms)
            {
                quiz.Forms.Shuffle();
            }

            _endTime = DateTime.Now.AddMinutes(_totalMinutes);

            btnBack.Enabled = _allowBack;

            tabControl.TabPages.Clear();
            for (int i = 0; i < _totalForms; i++)
            {
                var qf = quiz.Forms[i];

                if (_randomQuestions)
                {
                    qf.Answers.Shuffle();
                }

                TabPage tabPage = new TabPage($"Scheda {i + 1}");
                var     fc      = new GroguControls.FormControl()
                {
                    IsDesign   = false,
                    Id         = (i + 1).ToString(),
                    Dock       = DockStyle.Fill,
                    DataSource = qf
                };
                tabPage.Controls.Add(fc);
                tabControl.TabPages.Add(tabPage);
            }

            tabControl.SelectedIndex = _curFormIndex;

            StartTimer();
        }
Beispiel #10
0
        public async Task <ServiceResponse <object> > AddQuestion(QuizQuestionDtoForAdd model)
        {
            if (model.Answers.Where(m => m.IsTrue == true).Count() > 0)
            {
                var questionObj = new QuizQuestions
                {
                    QuizId         = model.QuizId,
                    QuestionTypeId = model.QuestionTypeId,
                    Question       = model.Question,
                    Marks          = model.Marks
                };
                await _context.QuizQuestions.AddAsync(questionObj);

                await _context.SaveChangesAsync();

                foreach (var item in model.Answers)
                {
                    var answer = new QuizAnswers
                    {
                        QuestionId = questionObj.Id,
                        Answer     = item.Answer,
                        IsTrue     = item.IsTrue
                    };
                    await _context.QuizAnswers.AddAsync(answer);

                    await _context.SaveChangesAsync();
                }
                List <QuestionForListDto> questions = await(from q in _context.QuizQuestions
                                                            join qType in _context.QuestionTypes
                                                            on q.QuestionTypeId equals qType.Id
                                                            where q.QuizId == model.QuizId
                                                            select new QuestionForListDto
                {
                    QuestionId     = q.Id,
                    Question       = q.Question,
                    QuestionTypeId = q.QuestionTypeId,
                    QuestionType   = qType.Type,
                    Marks          = Convert.ToInt32(q.Marks),
                }).ToListAsync();

                foreach (var question in questions)
                {
                    List <AnswerForListDto> answers = await(from ans in _context.QuizAnswers
                                                            where ans.QuestionId == question.QuestionId
                                                            select new AnswerForListDto
                    {
                        AnswerId = ans.Id,
                        Answer   = ans.Answer,
                        IsTrue   = Convert.ToBoolean(ans.IsTrue),
                    }).ToListAsync();
                    question.Answers.AddRange(answers);
                }
                _serviceResponse.Data = new
                {
                    QuestionCount = questions.Count(),
                    Questions     = questions
                };
                _serviceResponse.Success = true;
                _serviceResponse.Message = CustomMessage.Added;
                return(_serviceResponse);
            }
            else
            {
                _serviceResponse.Success = false;
                _serviceResponse.Message = CustomMessage.SelectLeastOneTrue;
                return(_serviceResponse);
            }
        }
Beispiel #11
0
 public List <QuizAnswer> GetAllAnswersOnQuestionId(int id)
 {
     return(QuizAnswers.Where(x => x.IdQuestion == id).ToList());
 }