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); }
//доволі складний метод, який в майбутньому необхідно буде переробити //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); }
public TestResultModel(int userId, TestsModel data) { TestData = data; this.userId = userId; float percent; storyData = GetRightAnswer(TestData, out percent); Percent = percent; }
//перехід до вибраного тесту 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(); } }
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++; } }
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; }
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, ""); }
public Test(int userId, TestsModel test, WindowState state) : this(state) { new TestPresenter(this, userId, test); }
public Test(int userId, TestsModel test, double left, double top, WindowState state) : this(left, top, state) { new TestPresenter(this, userId, test); }