//full constructor public Klass(string klassName, List <Student> students, PlacementTest placementTest, List <PracticeTest> practiceTests, List <MasteryTest> masteryTests) { this.KlassName = klassName; this.Students = students; this.PlacementTest = placementTest; this.PracticeTests = practiceTests; this.MasteryTests = masteryTests; }
private void btnCreateTest_Click(object sender, EventArgs e) { btnCreateTest.Text = "Creating Test"; btnCreateTest.Enabled = false; //if form validation is good then if (ValidateForm()) { int numberOfQuestions = Convert.ToInt32(cboNumberOfQuestions.SelectedItem); int numberOfQuestionsPerML = numberOfQuestions / 12; //take a few questions from each mastery level TimeSpan questionTimeLimit = new TimeSpan(0, 1, 0); PlacementTest placementTest = new PlacementTest(); for (int ml = 1; ml <= 12; ml++) //get questions from each mastery level { //make custom timelimits for each question depending on complexity questionTimeLimit = CalculateQuestionTimeLimit(cboQuestionSpeed.SelectedItem.ToString(), ml); //get the questions for just the current mastery level in this for loop List <Question> tempQuestionList = Question.GenerateRandomQuestions(ml, questionTimeLimit, numberOfQuestionsPerML); foreach (Question q in tempQuestionList) //add current mastery level questions to the actual placement test { placementTest.Questions.Add(q); } } //set other attributes of the test placementTest.MinLevel = 1; placementTest.MaxLevel = 12; placementTest.TimeLimit = TimeSpan.FromTicks(questionTimeLimit.Ticks * numberOfQuestions); //insert it placementTest.Id = MathWizDB.InsertTest(klassID, placementTest, "Placement Test", 0, placementTest.MinLevel, placementTest.MaxLevel); this.Close(); if (placementTest.Id > 0) { MessageBox.Show("Your new randomly generated Placement test has been created"); } else { MessageBox.Show("Failed to create placement test", "error"); } } else { MessageBox.Show("A placement test has already been created for this class.", "error"); } btnCreateTest.Text = "Create Test"; btnCreateTest.Enabled = true; }
private void backgroundWorkerLoadData_DoWork(object sender, DoWorkEventArgs e) { klass = MathWizDA.SelectStudentsKlass(student.Id); if (student.MasteryLevel == 0) //if student has not taken placement test yet, only load that test { availablePlacementTest = MathWizDA.SelectKlassesPlacementTest(klass.Id); } else //load the tests that the student can take, but not the placement test since they already took it { availableMasteryTests = MathWizDA.SelectKlassesMasteryTests(klass.Id); } }
//End SELECT ALL Users Methods public static PlacementTest SelectKlassesPlacementTest(int klassID) { PlacementTest placementTest = new PlacementTest(); //make the query the safe way by binding values to prevent SQL injection string query = "SELECT * FROM tests WHERE KlassID = @klassID AND TestType = 'Placement Test'"; SqlCommand selectCommand = new SqlCommand(query, conn); selectCommand.Parameters.AddWithValue("@klassID", klassID); try { conn.Open(); SqlDataReader reader = selectCommand.ExecuteReader(); if (reader.Read()) { placementTest.Id = Convert.ToInt32(reader["Id"]); placementTest.TimeLimit = TimeSpan.ParseExact(reader["TimeLimit"].ToString(), "hh\\:mm\\:ss", CultureInfo.InvariantCulture); placementTest.RandomlyGenerated = Convert.ToBoolean(reader["RandomlyGenerated"]); placementTest.MinLevel = Convert.ToInt32(reader["MinLevel"]); placementTest.MaxLevel = Convert.ToInt32(reader["MaxLevel"]); } reader.Close(); placementTest.Questions = SelectQuestions(placementTest.Id); } catch (SqlException ex) { MessageBox.Show("Database SQL Exception\n\n" + ex.ToString()); } catch (Exception ex) { MessageBox.Show("Generic Exception.\n\n" + ex.ToString()); } finally { if (conn != null && conn.State == ConnectionState.Open) { conn.Close(); } } return(placementTest); }
//full constructor public GradedPlacementTest(PlacementTest placementTest, int recommendedLevel, decimal score, TimeSpan timeTakenToComplete, DateTime dateTaken, List <GradedQuestion> rightlyAnsweredQuestions, List <GradedQuestion> wronglyAnsweredQuestions, string feedback = "") : base(score, timeTakenToComplete, dateTaken, rightlyAnsweredQuestions, wronglyAnsweredQuestions, feedback) { this.PlacementTest = placementTest; this.RecommendedLevel = recommendedLevel; }