Пример #1
0
        private void button1_Click(object sender, EventArgs e)
        {
            foreach (var c in table.Controls)
            {
                if (c.GetType().Name == "TextBox")
                {
                    if (((TextBox)c).Text == String.Empty)
                    {
                        MessageBox.Show("Заполните все поля");
                        return;
                    }
                }
            }

            var radios = table.Controls.OfType <RadioButton>().ToList();
            var checks = table.Controls.OfType <CheckBox>().ToList();
            var texts  = table.Controls.OfType <TextBox>().ToList();

            using (TestAppLibrary.TestAppContext db = new TestAppLibrary.TestAppContext())
            {
                if (multiChoice == true)
                {
                    for (int i = 0; i < texts.Count; i++)
                    {
                        TestAppLibrary.Answer ans = new TestAppLibrary.Answer {
                            Challenge = texts[i].Text, IsRight = checks[i].Checked, Question = db.Questions.Where(k => k.Id == id).First()
                        };
                        db.Answers.Add(ans);
                    }
                }
                else if (multiChoice == false)
                {
                    for (int i = 0; i < texts.Count; i++)
                    {
                        TestAppLibrary.Answer ans = new TestAppLibrary.Answer {
                            Challenge = texts[i].Text, IsRight = radios[i].Checked, Question = db.Questions.Where(k => k.Id == id).First()
                        };
                        db.Answers.Add(ans);
                    }
                }

                db.SaveChanges();

                form.TreeViewFill();
                this.DialogResult = DialogResult.OK;
                this.Close();
            }
        }
 private void button2_Click(object sender, EventArgs e)
 {
     using (TestAppLibrary.TestAppContext db = new TestAppLibrary.TestAppContext())
     {
         var answers = db.Answers.Where(i => i.Question.Id == questionId).ToList();
         var texts   = table.Controls.OfType <TextBox>().ToList();
         var radios  = table.Controls.OfType <RadioButton>().ToList();
         var checks  = table.Controls.OfType <CheckBox>().ToList();
         for (int i = 0; i < answers.Count; i++)
         {
             TestAppLibrary.Answer ans = answers[i];
             ans.Challenge = texts[i].Text;
             ans.Question  = db.Questions.Where(j => j.Id == questionId).FirstOrDefault();
             ans.IsRight   = (radios.Count != 0) ? radios[i].Checked : checks[i].Checked;
         }
         db.SaveChanges();
         this.Close();
     }
 }
Пример #3
0
        //Обработка нажатия на кнопку "Завершить"
        private void button2_Click(object sender, EventArgs e)
        {
            t.Stop();
            int rAns = 0;

            // Выборка ответов пользователя на последний вопрос
            using (TestAppLibrary.TestAppContext db = new TestAppLibrary.TestAppContext())
            {
                TestAppLibrary.Question que = q[count - 1];
                var answer = db.Answers.Where(i => i.Question.Id == que.Id).ToList();
                if (q[count - 1].MultiChoice == true)
                {
                    var boxes = table.Controls.OfType <CheckBox>();
                    int i     = 0;
                    foreach (var box in boxes)
                    {
                        TestAppLibrary.UserAnswer uans = new TestAppLibrary.UserAnswer();
                        var user = db.Users.Where(l => l.Id == idUser).FirstOrDefault();
                        uans.User = user;
                        TestAppLibrary.Answer ans1 = answer[i++];
                        uans.Answer   = ans1;
                        uans.IsPicked = box.Checked;
                        db.UserAnswers.Add(uans);
                    }
                }
                else
                {
                    var radios = table.Controls.OfType <RadioButton>();
                    int i      = 0;
                    foreach (var radio in radios)
                    {
                        TestAppLibrary.UserAnswer uans = new TestAppLibrary.UserAnswer();
                        var user = db.Users.Where(l => l.Id == idUser).FirstOrDefault();
                        uans.User = user;
                        TestAppLibrary.Answer ans1 = answer[i++];
                        uans.Answer   = ans1;
                        uans.IsPicked = radio.Checked;
                        db.UserAnswers.Add(uans);
                    }
                }
                db.SaveChanges();
                //В случае, если пользователь прервал экзамен до ответа на все вопросы,
                //создаются записи для соблюдения целостности базы
                if (IsAllFinished == false)
                {
                    for (int i = count; i < q.Count; i++)
                    {
                        TestAppLibrary.Question quest = q[i];
                        var answers = db.Answers.Where(j => j.Question.Id == quest.Id).ToList();
                        foreach (var a in answers)
                        {
                            TestAppLibrary.UserAnswer uans = new TestAppLibrary.UserAnswer();
                            var us = db.Users.Where(l => l.Id == idUser).FirstOrDefault();
                            uans.User = us;
                            TestAppLibrary.Answer ans1 = a;
                            uans.Answer   = ans1;
                            uans.IsPicked = false;
                            db.UserAnswers.Add(uans);
                        }
                    }
                    db.SaveChanges();
                }
                //Проверка ответов пользователя
                foreach (var q in db.Questions.Where(i => i.Exam.Id == idExam).ToList())
                {
                    var ans      = db.Answers.Where(i => i.Question.Id == q.Id).ToList();
                    int questAns = 0;
                    foreach (var a in ans)
                    {
                        var ua = db.UserAnswers.Where(i => i.User.Id == idUser && i.Answer.Id == a.Id).FirstOrDefault();
                        if (ua != null)
                        {
                            if (ua.IsPicked == a.IsRight)
                            {
                                questAns += 0;
                            }
                            else
                            {
                                questAns += 1;
                            }
                        }
                    }
                    TestAppLibrary.UserQuestion uq = new TestAppLibrary.UserQuestion();
                    var user = db.Users.Where(l => l.Id == idUser).FirstOrDefault();
                    uq.User     = user;
                    uq.Question = db.Questions.Where(i => i.Id == q.Id).FirstOrDefault();
                    uq.IsRight  = (questAns == 0) ? true : false;
                    if (uq.IsRight == true)
                    {
                        rAns += 1;
                    }
                    db.UserQuestions.Add(uq);
                    db.SaveChanges();
                }

                TestAppLibrary.UserExams ue = db.UserExams.Where(i => i.User.Id == idUser && i.Exam.Id == idExam).FirstOrDefault();
                ue.IsPassed = (ex.QuestionToPass > rAns) ? false : true;
                db.SaveChanges();
                //Вызов формы с финальным результатом теста
                FormExamResult fer = new FormExamResult(this, q.Count, ex.QuestionToPass, rAns);
                fer.ShowDialog();
                this.Close();
            }
        }
Пример #4
0
 //Обработка нажатия на кнопку "Следующий вопрос"
 private void button1_Click(object sender, EventArgs e)
 {
     //В начале происходит выборка предыдущих ответов пользователя. Результаты выбора пользователя заносятся в базу данных
     using (TestAppLibrary.TestAppContext db = new TestAppLibrary.TestAppContext())
     {
         TestAppLibrary.Question que = q[count - 1];
         var answer = db.Answers.Where(i => i.Question.Id == que.Id).ToList();
         if (q[count - 1].MultiChoice == true)
         {
             var boxes = table.Controls.OfType <CheckBox>();
             int i     = 0;
             foreach (var box in boxes)
             {
                 TestAppLibrary.UserAnswer uans = new TestAppLibrary.UserAnswer();
                 var user = db.Users.Where(l => l.Id == idUser).FirstOrDefault();
                 uans.User = user;
                 TestAppLibrary.Answer ans1 = answer[i++];
                 uans.Answer   = ans1;
                 uans.IsPicked = box.Checked;
                 db.UserAnswers.Add(uans);
             }
         }
         else
         {
             var radios = table.Controls.OfType <RadioButton>();
             int i      = 0;
             foreach (var radio in radios)
             {
                 TestAppLibrary.UserAnswer uans = new TestAppLibrary.UserAnswer();
                 var user = db.Users.Where(l => l.Id == idUser).FirstOrDefault();
                 uans.User = user;
                 TestAppLibrary.Answer ans1 = answer[i++];
                 uans.Answer   = ans1;
                 uans.IsPicked = radio.Checked;
                 db.UserAnswers.Add(uans);
             }
         }
         //Выведение на форму следующего вопроса
         TestAppLibrary.Question quest = q[count++];
         textBox1.Text = quest.Challenge;
         Control ctrl;
         textBox1.ReadOnly = true;
         table             = new TableLayoutPanel();
         table.Parent      = splitContainer2.Panel1;
         table.Dock        = DockStyle.Fill;
         table.ColumnCount = 2;
         table.Padding     = new Padding(20, 10, 10, 20);
         table.AutoScroll  = true;
         table.BringToFront();
         table.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 20));
         int k   = 0;
         var ans = db.Answers.Where(i => i.Question.Id == quest.Id).ToList();
         for (int j = 0; j < quest.AnswersNumber && j < ans.Count; j++)
         {
             if (quest.MultiChoice == false)
             {
                 ctrl = new RadioButton();
             }
             else
             {
                 ctrl = new CheckBox();
             }
             ctrl.Parent = table;
             TextBox t = new TextBox();
             t.Parent    = table;
             t.Multiline = true;
             t.WordWrap  = true;
             t.Size      = new Size {
                 Width = 250, Height = 50
             };
             t.Text = ans[k++].Challenge;
         }
         //Если вопросов больше нет в коллекции сделать неактивной кнопку продолжения
         if (count == q.Count)
         {
             button1.Enabled = false;
         }
         db.SaveChanges();
     }
 }