TestsModel CreateTest(int testId)
        {
            TestsModel result = null;

            using (SqlCeConnection connection = new SqlCeConnection(connectionString))
            {
                connection.Open();
                using (SqlCeCommand cmd = connection.CreateCommand())
                {
                    cmd.CommandText = "SELECT TestId, Name, OwnerId, Difficult, TaskCount, TestType FROM Test WHERE TestId=@testId";
                    cmd.Parameters.AddWithValue("@testId", testId);
                    SqlCeDataReader dr = cmd.ExecuteReader();
                    while (dr.Read())
                    {
                        int    id        = Convert.ToInt32(dr["TestId"]);
                        string name      = dr["Name"].ToString();
                        int    ownerId   = Convert.ToInt32(dr["OwnerId"]);
                        string difficult = dr["Difficult"].ToString();
                        int    taskCount = Convert.ToInt32(dr["TaskCount"]);
                        string type      = dr["TestType"].ToString();
                        result = new TestsModel(id, name, ownerId, difficult, taskCount, type);
                    }
                }
            }
            return(result);
        }
示例#2
0
        //доволі складний метод, який в майбутньому необхідно буде переробити
        //result - відповіді, питання allFalse - показує, що правильної відповіді в питанні не має,
        //answerCount - кількість правильних відповідей, rAnswerCount - кількість правильних питань які дав користувач
        //спочатку відбувається прохід по всім питанням, для кожного питання перебираються всі відповіді
        string[] GetRightAnswer(TestsModel data, out float percent)
        {
            string[] result = new string[2] {
                "", ""
            };
            bool allFalse     = true;
            int  answerCount  = 0;
            int  rAnswerCount = 0;
            int  allCount     = 0;

            foreach (QuestionsModel quest in data.Questions)
            {
                answerCount  = 0;
                rAnswerCount = 0;
                foreach (AnswersModel answer in quest.Answers)
                {
                    if (answer.Rightness == true && answer.UserChoice == true)
                    {
                        allFalse   = false;
                        result[1] += answer.Id + " ";
                        rAnswerCount++;
                        answerCount++;
                    }
                    else if (answer.Rightness == true)
                    {
                        answerCount++;
                        allFalse = false;
                    }
                    else if (answer.UserChoice == true)
                    {
                        allFalse   = false;
                        result[1] += answer.Id + " ";
                        rAnswerCount--;
                    }
                }
                result[0] += quest.Id + " ";
                result[1] += "\n";
                if (rAnswerCount < 0)
                {
                    rAnswerCount = 0;
                }
                else if (answerCount != 0)
                {
                    allCount += (rAnswerCount * 100) / answerCount;
                }

                if (allFalse)
                {
                    if (allFalse)
                    {
                        allCount += 100;
                    }
                }
                allFalse = true;
            }
            percent = allCount / data.Questions.Count;
            return(result);
        }
示例#3
0
        public TestResultModel(int userId, TestsModel data)
        {
            TestData    = data;
            this.userId = userId;
            float percent;

            storyData = GetRightAnswer(TestData, out percent);
            Percent   = percent;
        }
示例#4
0
        //перехід до вибраного тесту
        void window_Item_DoubleClick(object sender, EventArgs e)
        {
            TestsModel mod = window.GetChoosenModel(sender) as TestsModel;

            if (mod != null)
            {
                Window win        = window as Window;
                Test   testWindow = new Test(userId, mod, win.Left, win.Top, win.WindowState);
                testWindow.ShowDialog();
            }
        }
示例#5
0
 public TestPresenter(ITestView win, int userId, TestsModel test)
 {
     window      = win;
     model       = test;
     this.userId = userId;
     border      = new BorderPresenter(win);
     window.SetAllQuestions(model.Questions);
     count = 0;
     SetData();
     answers = new Dictionary <int, string>();
     window.Border_MouseLeftButtonDown     += window_Border_MouseLeftButtonDown;
     window.NextBorder_MouseLeftButtonDown += window_NextBorder_MouseLeftButtonDown;
 }
        public void SetMainData(TestsModel test)
        {
            int questCount = 0;

            foreach (QuestionsModel quest in test.Questions)
            {
                int         count = 0;
                Grid        grid  = DynamicElements.CreateGrid(5, quest.Answers.Count + 3, GridUnitType.Star, GridUnitType.Star);
                RichTextBox rtb   = new RichTextBox();
                rtb.Name = "rtb_Question" + quest.Id;
                DynamicElements.SetRowColumnProperties(rtb, count, 1, 4, 2);
                Viewbox number = DynamicElements.CreateViewBoxLabel((questCount + 1) + ".", 0);
                DynamicElements.SetRowColumnProperties(number, count, 0, 1, 1);
                grid.Children.Add(number);
                count += 3;
                rtb.AppendText(quest.Text);
                rtb.FontSize = fontSize;
                grid.Children.Add(rtb);
                foreach (AnswersModel answer in quest.Answers)
                {
                    Border bord = new Border();
                    bord.Margin    = new Thickness(1, 3, 1, 1);
                    bord.MaxHeight = 100;
                    if (answer.UserChoice == true && answer.Rightness == true)
                    {
                        bord.Background = this.FindResource("Green") as Brush;
                    }
                    else if (answer.UserChoice == true)
                    {
                        bord.Background = Brushes.PaleVioletRed;
                    }
                    else if (answer.Rightness == true)
                    {
                        bord.Background = Brushes.LightGreen;
                    }
                    Viewbox vb = new Viewbox();
                    vb.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
                    CheckBox cb = DynamicElements.CreateCheckBox(answer.UserChoice);
                    vb.Child   = cb;
                    cb.Content = answer.Text;
                    bord.Child = vb;
                    DynamicElements.SetRowColumnProperties(bord, count, 1, 3, 1);
                    count++;
                    grid.Children.Add(bord);
                }
                panel.Children.Add(grid);
                questCount++;
            }
        }
示例#7
0
 public TestResultPresenter(ITestResultView win, int userId, TestsModel test, bool save)
 {
     this.userId = userId;
     window      = win;
     model       = new TestResultModel(userId, test);
     if (save)
     {
         model.SaveResult();
     }
     border = new BorderPresenter(win);
     window.SetPercent(model.Percent);
     window.SetMainData(model.TestData);
     window.Border_MouseLeftButtonDown += window_Border_MouseLeftButtonDown;
     window.Window_StateChanged        += window_Window_StateChanged;
 }
示例#8
0
 void SaveResults(TestsModel test, float percent, string answers, string questions)
 {
     using (SqlCeConnection connection = new SqlCeConnection(connectionString))
     {
         connection.Open();
         using (SqlCeCommand cmd = connection.CreateCommand())
         {
             cmd.CommandText = "INSERT INTO [TestHistory]([UserId], [TestId], [PassDate], [SuccessPercent], [Questions], [Answers]) VALUES(@userId,@testId,@passDate,@percent, @question, @answer);";
             cmd.Parameters.AddWithValue("@userId", userId);
             cmd.Parameters.AddWithValue("@testId", test.TestId);
             cmd.Parameters.AddWithValue("@passDate", DateTime.Now.Date);
             cmd.Parameters.AddWithValue("@percent", percent);
             cmd.Parameters.AddWithValue("@question", questions);
             cmd.Parameters.AddWithValue("@answer", answers);
             cmd.ExecuteNonQuery();
         }
         connection.Close();
     }
 }
 public TestResult(int userId, TestsModel test, bool save, WindowState state)
     : this(state)
 {
     new TestResultPresenter(this, userId, test, save);
 }
 public TestResult(int userId, TestsModel test, bool save, double left, double top, WindowState state)
     : this(left, top, state)
 {
     new TestResultPresenter(this, userId, test, save);
 }
 public void SetTest(int testId, string questions, string answers)
 {
     test           = CreateTest(testId);
     test.Questions = CreateQuestions(ParseQuests(questions), testId);
     ParseAnswers(answers, test.Questions);
 }
 public CreateTestModel(int userId)
 {
     this.userId = userId;
     Test        = new TestsModel(0, "", userId, "", 10, "");
 }
示例#13
0
 public Test(int userId, TestsModel test, WindowState state)
     : this(state)
 {
     new TestPresenter(this, userId, test);
 }
示例#14
0
 public Test(int userId, TestsModel test, double left, double top, WindowState state)
     : this(left, top, state)
 {
     new TestPresenter(this, userId, test);
 }