public INavigator RunTest(TestSet.TestsRow test) { return (test.IsPractice ? (INavigator) new PracticeNavigator(test, this) : (INavigator) new TestNavigator(test, this)); }
public WebTestController(TestSet.TestsRow testRow, Manager manager) { isPractice = testRow.IsPractice; this.manager = manager; this.testRow = testRow; navigator = manager.RunTest(testRow); }
public TestController(TestSet.TestsRow testRow, INavigator navigator, MainForm mainForm, Manager manager) { mainForm.RegisterTestController(this); mainForm.Hide(); this.mainForm = mainForm; isPractice = testRow.IsPractice; this.testRow = testRow; this.navigator = navigator; this.manager = manager; }
public NavigatorSkeleton(TestSet.TestsRow test, Manager manager) { this.manager = manager; this.test = test; manager.DataProvider.GetQuestionSetsByTestId(test.Id, sets); setRemainedTime = new TimeSpan[sets.QuestionSets.Count]; resultRow = result.Results.AddResultsRow(manager.UserId, test.Id, DateTime.Now, DateTime.MaxValue, 0, ""); int i = 0; foreach (QuestionSetSet.QuestionSetsRow row in sets.QuestionSets) { setRemainedTime[i] = row.IsTimeLimitNull() ? TimeSpan.MaxValue : new TimeSpan(0, row.TimeLimit, 0); ++i; result.ResultsDetailsOfSets.AddResultsDetailsOfSetsRow(resultRow, row.Id, 0, (byte)i); } }
public TestNavigator(TestSet.TestsRow test, Manager manager) : base(test, manager) { questionsAnswers = new QuestionAnswerSet[sets.QuestionSets.Count, 3]; int i = 0, timeMin = 0; foreach (QuestionSetSet.QuestionSetsRow set in sets.QuestionSets) { for (byte zoneIndex = 0; zoneIndex <= 2; ++zoneIndex) { QuestionAnswerSet qa = new QuestionAnswerSet(); manager.DataProvider.GetQuestionsAnswersByQuestionSetIdAndZone(set.Id, (byte)(zoneIndex + 1), qa); questionsAnswers[i, zoneIndex] = qa; } ++i; totalQuestions += set.NumberOfQuestionsInZone1 + set.NumberOfQuestionsInZone2 + set.NumberOfQuestionsInZone3; questionsInZones[0] = set.NumberOfQuestionsInZone1; questionsInZones[1] = set.NumberOfQuestionsInZone2; questionsInZones[2] = set.NumberOfQuestionsInZone3; if (timeMin >= 0) { if (set.IsTimeLimitNull()) { timeMin = -1; } else { timeMin += set.TimeLimit; } } } base.NextSet += new SimpleMethod(TestNavigator_NextSet); if (timeMin >= 0) { totalTime = new TimeSpan(0, timeMin, 0); } else { totalTime = TimeSpan.MaxValue; } }
private void DoTestById(int id) { //try { manager_.GetTests(testSet); TestSet.TestsRow tr = testSet.Tests.FindById(id); Session.Add("TestSet", testSet); if (tr.IsPractice) { PracticeFormController pc = new PracticeFormController(tr, manager_); Session.Add("IPracticeFormController", pc); Session.Add("WebTestController", pc as WebTestController); } else { WebTestController webTestController = new WebTestController(tr, manager_); Session.Add("WebTestController", webTestController); } Response.Redirect("descriptionwebform.aspx"); } //catch (Exception) { } }
public PracticeNavigator(TestSet.TestsRow test, Manager manager) : base(test, manager) { questionsAnswers = new QuestionAnswerSet[sets.QuestionSets.Count]; activeQuestionIndexes = new int[sets.QuestionSets.Count]; int i = 0; int timeMin = 0; totalQuestions = 0; Random r = new Random(); foreach (QuestionSetSet.QuestionSetsRow set in sets.QuestionSets) { totalQuestions += set.NumberOfQuestionsToPick; if (timeMin >= 0) { if (set.IsTimeLimitNull()) { timeMin = -1; } else { timeMin += set.TimeLimit; } } activeQuestionIndexes[i] = -1; questionsAnswers[i] = new QuestionAnswerSet(); manager.DataProvider.GetQuestionsAnswersByQuestionSetId(set.Id, questionsAnswers[i]); _explanationsDataTable = manager.DataProvider.GetExplanations(test.Id); if (questionsAnswers[i].Questions.Count < set.NumberOfQuestionsToPick) { throw new Exception( "Test is not valid: NumberOfQuestionsToPick is greater then total number of questions assigned to the test"); } //Take random questions from the set so we have only NumberOfQuestionsToPick questions. int count = questionsAnswers[i].Questions.Count; if (set.NumberOfQuestionsToPick - questionsAnswers[i].Questions.Count < set.NumberOfQuestionsToPick / 2) { while (count != set.NumberOfQuestionsToPick) { int j; do { j = r.Next(questionsAnswers[i].Questions.Count); } while (questionsAnswers[i].Questions[j].RowState == DataRowState.Deleted); questionsAnswers[i].Questions[j].Delete(); --count; } } else { foreach (QuestionAnswerSet.QuestionsRow row in questionsAnswers[i].Questions) { row.Delete(); } count = 0; while (count != set.NumberOfQuestionsToPick) { int j; do { j = r.Next(questionsAnswers[i].Questions.Count); } while (questionsAnswers[i].Questions[j].RowState != DataRowState.Deleted); questionsAnswers[i].Questions[j].RejectChanges(); ++count; } } questionsAnswers[i].Questions.AcceptChanges(); ++i; } if (timeMin >= 0) { totalTime = new TimeSpan(0, timeMin, 0); } else { totalTime = TimeSpan.MaxValue; } SetActiveSet(sets.QuestionSets[0].Id); SetActiveQuestion(questionsAnswers[0].Questions[0].Id); }
public PracticeFormController(TestSet.TestsRow testRow, Manager manager) : base(testRow, manager) { }