private void buttonOK_Click(object sender, EventArgs e) { AddUserForm addUserForm = new AddUserForm(false); if (addUserForm.ShowDialog() != DialogResult.OK) { return; } _resultUser = addUserForm.ResultUser; LocalTestingProvider provider = null; TestHelper selectedTest = listBox.SelectedItem as TestHelper; if (selectedTest.IsMasterTest) { provider = new LocalTestingProvider(DataCreator.CreateFullTestorDataSet(_testHelpers), selectedTest); } else { provider = new LocalTestingProvider(selectedTest.TestorData, selectedTest); } provider.SetStudentName(String.Format("{0} {1} {2}", HtmlStore.GetString(_resultUser.LastName), HtmlStore.GetString(_resultUser.FirstName), HtmlStore.GetString(_resultUser.SecondName))); TestForm testForm = new TestForm(provider); testForm.ShowDialog(); }
internal override void ProcessQuestion(bool isNewQuestion) { if (isNewQuestion) { if (_index == _questIds.Count - 1) { _index = -1; } _index++; } try { int qId = _questIds[_index]; AppealResult appeal = TestClient.GetQuestionAppeal(_statistics.TestSessionId, qId, true); var htmlStore = HtmlStore.GetHtmlStore(appeal.TestorData, qId); htmlStore.IsAppeal = true; htmlStore.AppealIsRight = appeal.IsRightAnswer; htmlStore.Answer = appeal.Answer; _currentQuestion = htmlStore; } catch (Exception ex) { SystemMessage.ShowErrorMessage(ex); } }
public static void CreateMasterTest() { InputBox ib = new InputBox("Имя мастер теста", "Введите имя мастер теста:"); if (ib.ShowDialog() != DialogResult.OK) { return; } if (ProjectState.TestHelpers.Where(c => c.TestName == ib.Input).Count() > 0) { SystemMessage.ShowWarningMessage("Данное имя теста уже используется."); return; } TestorData td = new TestorData(); TestorData.CoreTestsRow testRow = HtmlStore.CreateCoreTest(td, ib.Input); testRow.IsMasterTest = true; td.CoreTests.AddCoreTestsRow(testRow); TestHelper testHelper = new TestHelper(ProjectState.DataPackageManager); testHelper.TestKey = testRow.TestKey.ToString(); testHelper.ConvTime = DateTime.Now; testHelper.FullFileName = String.Empty; testHelper.TestorData = td; testHelper.TestName = ib.Input; testHelper.QuestCount = 0; testHelper.IsMasterTest = true; List <TestHelper> helperList = new List <TestHelper>(); helperList.Add(testHelper); ProjectState.AddTests(helperList); }
public TestContentForm(TestorData data) { InitializeComponent(); _data = data; int i = 0; foreach (var test in ProjectState.TestHelpers.OrderBy(c => c.TestName)) { if (test.IsMasterTest) { continue; } if (test.IsTestorDataLoaded && test.TestorData == data) { _index = i; } tscbTests.Items.Add(test); i++; } tscbTests.SelectedIndex = _index; bool canBackForward = ProjectState.TestHelpers.Count > 1; tsbBackTest.Enabled = canBackForward; tsbForwardTest.Enabled = canBackForward; _provider = new EditProvider(HtmlStore.GetHtmlStore(_data, 1)); _provider.ProviderMode = ProviderMode.EditMode; TestingHttpServer.StartServer(_provider); TestingHttpServer.ServerNotStarted.WaitOne(); webBrowserQuestion.Navigate(TestingHttpServer.BaseUrl); }
public static void UpdateTest(string fileName, HtmlStore[] store) { TestHelper helper = TestHelpers.Where(c => c.FullFileName == fileName).First(); FileInfo fi = new FileInfo(fileName); helper.ConvTime = fi.LastWriteTime; helper.TestorData.CoreBLOBs.Clear(); int qCount = helper.TestorData.CoreQuestions.Count(); double[] marks = new double[helper.TestorData.CoreQuestions.Count()]; for (int i = 0; i < qCount; i++) { marks[i] = helper.TestorData.CoreQuestions[i].QuestionMark; } helper.TestorData.CoreAnswers.Clear(); helper.TestorData.CoreQuestions.Clear(); HtmlStore.AddToDataset(helper.TestorData, helper.TestorData.CoreTests[0], store); helper.QuestCount = helper.TestorData.CoreQuestions.Count(); for (int i = 0; i < helper.TestorData.CoreQuestions.Count(); i++) { if (i >= qCount) { break; } helper.TestorData.CoreQuestions[i].QuestionMark = (short)marks[i]; } HasChanges = true; OnTestHelpersChanged(); }
public static QuestionType GetQuestionType(HtmlStore quest) { QuestionType retValue = QuestionType.SingleAnswerQuestion; if (IsDigitAnswerQuestion(quest)) { retValue = QuestionType.DigitAnswerQuestion; } else if (IsMultiAnswerQuestion(quest)) { retValue = QuestionType.MultiAnswerQuestion; } else if (IsStringAnswerQuestion(quest)) { retValue = QuestionType.StringAnswerQuestion; } else if (IsMultiWordAnswerQuestion(quest)) { retValue = QuestionType.MultiWordAnswerQuestion; } return(retValue); }
public void CreateMasterTest(string testName) { TestorData data = new TestorData(); TestorData.CoreTestsRow row = HtmlStore.CreateCoreTest(data, testName); row.IsMasterTest = true; data.CoreTests.Rows.Add(row); SendTests(data, new List<int>()); }
private void InitNextQuestStage() { _sb = new StringBuilder(); _isAnswerMode = false; _currentChar = 'a'; _currentQuestion = new HtmlStore(); _qIndex++; }
private static bool IsStringAnswerQuestion(HtmlStore quest) { bool retValue = false; if (quest.SubItems.Count == 1) { retValue = quest.SubItems[0].IsTrue; } return(retValue); }
private static bool IsMultiWordAnswerQuestion(HtmlStore quest) { bool retValue = false; if (quest.Html.IndexOf("<@") > -1) { retValue = true; } return(retValue); }
private static bool IsMultiAnswerQuestion(HtmlStore quest) { bool retValue = false; int trueCount = quest.SubItems.Where(c => c.IsTrue == true).Count(); if (trueCount > 1) { retValue = true; } return(retValue); }
public AppealForm(TestSessionStatistics currentSession) { InitializeComponent(); _currentSession = currentSession; this.Text += String.Format(" - {0} {1} {2}", HtmlStore.GetString(_currentSession.LastName), HtmlStore.GetString(_currentSession.FirstName), HtmlStore.GetString(_currentSession.SecondName)); _questions = StaticServerProvider.TestClient.GetSessionQuestions(_currentSession.TestSessionId); _provider = new AppealProvider(_currentSession, _questions, null); TestingHttpServer.StartServer(_provider); TestingHttpServer.ServerNotStarted.WaitOne(); webBrowser.Navigate(TestingHttpServer.BaseUrl); }
private void buttonSelectStudent_Click(object sender, EventArgs e) { ClientSelectUserForm selectUser = new ClientSelectUserForm(); if (selectUser.ShowDialog() != DialogResult.OK) { return; } _resultUser = selectUser.ResultUser; textBoxStudentName.Text = String.Format("{0} {1} {2}", HtmlStore.GetString(_resultUser.LastName), HtmlStore.GetString(_resultUser.FirstName), HtmlStore.GetString(_resultUser.SecondName)); }
private void AnsversProsess(string rtf, HtmlStore quest) { using (RichTextBox rtq = new RichTextBox()) { rtq.Rtf = rtf; rtq.AppendText("►"); int start = rtq.Find("a)"); string st = "b)"; bool b = true; int n = 98; using (RichTextBox Rta = new RichTextBox()) { int end = rtq.Find(st, start + 2, RichTextBoxFinds.MatchCase); if (end == -1) { end = rtq.Find("►", start + 2, RichTextBoxFinds.MatchCase); b = false;; } while (end != -1) { bool isTrue = false; rtq.Select(start + 2, end - start - 2); Rta.Rtf = rtq.SelectedRtf; start = end; n++; st = (char)n + ")"; if (b) { end = rtq.Find(st, start + 2, RichTextBoxFinds.MatchCase); } else { end = -1; } if ((end == -1) && (b)) { end = rtq.Find("►", start + 2, RichTextBoxFinds.MatchCase); b = false;; } if (Rta.Find("!!!", RichTextBoxFinds.MatchCase) > -1) { Rta.Select(Rta.Find("!!!", RichTextBoxFinds.MatchCase), 3); Rta.SelectedText = String.Empty; isTrue = true; } HtmlStore answer = Rtf2HTML.GetHtml(Rta.Rtf); answer.IsTrue = isTrue; quest.SubItems.Add(answer); } } } }
public QuestAnswerResult ProcessAnswer(int questId, Dictionary <string, List <string> > requestParams) { Debug.Assert(questId > 0); QuestAnswerResult retValue = new QuestAnswerResult(); using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString)) { var session = (from c in dataContext.TestSessions join x in dataContext.CoreTests on c.TestId equals x.TestId where c.EndTime == null && c.UserId == Provider.CurrentUser.UserId select new { x.TestId, x.TimeLimit, c.TestSessionId, c.StartTime, c.AdditionalTime }).First(); int timeLimit = session.TimeLimit; if (timeLimit != 0 && session.AdditionalTime.HasValue) { timeLimit += session.AdditionalTime.Value; } if (session.TimeLimit != 0 && (DateTime.Now - session.StartTime).TotalMinutes > timeLimit + 1) { throw new Exception("Время истекло"); } TestorData testorData = GetQuestion(questId, true, false, false); HtmlStore currentQuestion = HtmlStore.GetHtmlStore(testorData, questId); BaseQuestionProvider qp = QuestionsHtmlFactory.GetQuestionProvider(currentQuestion); string message = null; string answer = null; retValue.isRightAnswer = qp.IsRightAnswer(requestParams, ref message, ref answer); retValue.Message = message; retValue.Score = 0; if (!retValue.isRightAnswer.HasValue) { return(retValue); } if (retValue.isRightAnswer.Value) { retValue.Score = testorData.CoreQuestions.Where(c => c.QuestionId == questId).FirstOrDefault().QuestionMark; } var tsq = dataContext.TestSessionQuestions.Where( c => c.QuestionId == questId && c.TestSessionId == session.TestSessionId).First(); tsq.IsRightAnswer = retValue.isRightAnswer; tsq.Answer = answer; dataContext.SubmitChanges(); } return(retValue); }
internal override void ProcessQuestion(bool isNewQuestion) { if (isNewQuestion) { InitNextId(0); } if (State == ProviderState.Results) { return; } int qId = _questIds[_index]; _currentQuestion = HtmlStore.GetHtmlStore(_testorData, qId); }
private void linkLabelSelectStudent_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { ClientSelectUserForm selectUser = new ClientSelectUserForm(); if (selectUser.ShowDialog() != DialogResult.OK) { _resultUser = null; textBoxStudent.Text = String.Empty; } else { _resultUser = selectUser.ResultUser; textBoxStudent.Text = String.Format("{0} {1} {2}", HtmlStore.GetString(_resultUser.LastName), HtmlStore.GetString(_resultUser.FirstName), HtmlStore.GetString(_resultUser.SecondName)); } GetStatistics(); }
private void TestIsDone(FileInfo file, HtmlStore[] htmlStore) { string testName = String.Empty; EndConvertingDelegate endConvertingDelegate = new EndConvertingDelegate(EndConverting); if (htmlStore == null) { SystemMessage.ShowErrorMessage("Ошибка конвертации тестов."); _cancel = true; this.Invoke(endConvertingDelegate, new object[] { }); return; } if (_isUpdate) { BeginUpdateDelegate updateDelegate = new BeginUpdateDelegate(UpdateTest); this.Invoke(updateDelegate, new object[] { file.FullName, htmlStore }); return; } TestorData testorData = HtmlStore.GetDataSet(htmlStore, file, out testName); TestHelper testHelper = new TestHelper(ProjectState.DataPackageManager); testHelper.ConvTime = file.LastWriteTime; testHelper.TestId = testorData.CoreTests[0].TestId; testHelper.FullFileName = file.FullName; testHelper.TestorData = testorData; testHelper.TestName = testName; testHelper.QuestCount = testorData.CoreQuestions.Count(); foreach (var test in testorData.CoreTests) { testHelper.TestKey = test.TestKey.ToString(); } _tests.Add(testHelper); RefreshListDelegate refreshListDelegate = new RefreshListDelegate(RefreshList); this.Invoke(refreshListDelegate, new object[] { testHelper.TestName }); lock (this) { _testCount--; if (_testCount == 0 || _cancel) { this.Invoke(endConvertingDelegate, new object[] { }); return; } ConvertNext(); } }
private void QuestionProsessAsync(object param) { object[] paramArr = (object[])param; string rtf = (string)paramArr[0]; string rtfAnswers = (string)paramArr[1]; ManualResetEvent mre = (ManualResetEvent)paramArr[2]; int questionIndex = (int)paramArr[3] - 2; HtmlStore quest = new HtmlStore(); quest.QuestIndex = questionIndex; lock (_htmlStoreList) _htmlStoreList.Add(quest); Rtf2HTML.GetHtml(rtf, ref quest); AnsversProsess(rtfAnswers, quest); quest.QuestionType = QuestionTypeHelper.GetQuestionType(quest); mre.Set(); }
private void bindingSourceQuest_CurrentItemChanged(object sender, EventArgs e) { if (bindingSourceQuest.CurrencyManager.Position == -1) { return; } TestorData.CoreQuestionsRow currentRow = ((bindingSourceQuest.Current as DataRowView).Row as TestorData.CoreQuestionsRow); tscbMark.SelectedIndex = (int)Math.Round(currentRow.QuestionMark, 0) - 1; try { _provider.SetHtmlStore(HtmlStore.GetHtmlStore(_data, currentRow.QuestionId)); webBrowserQuestion.Navigate(TestingHttpServer.BaseUrl); } catch { } }
public static string GetQuestionHtml(HtmlStore store, ProviderMode mode) { if (store == null) { return(null); } StringBuilder sb = new StringBuilder(); sb.Append(ConvertImageUris(store.Html, store.QuestIndex, mode)); sb.Append("<table width=\"100%\" style=\"border:0px;border-collapse:collapse;margin:8px 0px 8px 0px;\" cellspacing=\"0\"><tr><td style=\"height:1px;background-color:#7d9acb;padding:0px;margin:0px;\"></td></tr></table>"); BaseQuestionProvider questProvider = GetQuestionProvider(store); if (questProvider == null) { questProvider = new NoAnswerQuestionProvider(store); } sb.Append(ConvertImageUris(questProvider.ProcessHtml(), store.QuestIndex, mode)); return(sb.ToString()); }
internal override void ProcessQuestion(bool isNewQuestion) { if (_webServerProvider == null) { StartTestParams startParams = StaticServerProvider.TestClient.GetNotCommitedSessions(0, false); if (startParams != null && startParams.AdditionalTime.HasValue) { AdditionalTime = startParams.AdditionalTime.Value; OnTimeChanged(); } } if (isNewQuestion) { InitNextId(0); } if (State == ProviderState.Results) { return; } int qId = _questIds[_index]; try { bool getBlobs = _webServerProvider == null; if (_useCompression) { _currentQuestion = HtmlStore.GetHtmlStore(DataCompressor.DecompressData <TestorData>(TestClient.GetQuestion(qId, getBlobs)), qId); } else { _currentQuestion = HtmlStore.GetHtmlStore(TestClient.GetQuestionData(qId, getBlobs), qId); } } catch (TimeoutException) { _currentQuestion = null; } catch { State = ProviderState.Results; } }
public override string ProcessHtml() { StringBuilder sb = new StringBuilder(); if (_htmlStore.IsAppeal) { bool isTrue = false; if (_htmlStore.SubItems.Count > 0) { isTrue = _htmlStore.AppealIsRight; } string answer = HtmlStore.GetString(_htmlStore.Answer).Replace(";", String.Empty); sb.Append(" Верный ответ: "); sb.Append(_htmlStore.SubItems[0].Html); if (isTrue) { sb.Append("<br/><font color=\"green\">"); } else if (answer.Length == 0) { sb.Append("<br/><font color=\"blue\">"); } else { sb.Append("<br/><font color=\"red\">"); } sb.Append(" Данный ответ: "); sb.Append(answer); sb.Append("</font>"); sb.Append("<br/>"); } else { sb.Append("<br/> Введите ответ:  "); sb.Append("<input type=\"text\" name=\"tcv_testortext\" size=\"50\" maxlength=\"100\" onkeydown=\"if(window.event.keyCode==13)return false;\" autocomplete=\"off\"/><br/><br/>"); } return(sb.ToString()); }
protected void Page_Load(object sender, EventArgs e) { if (!Context.User.Identity.IsAuthenticated) { Response.Redirect("~/Default.aspx"); } if (!IsPostBack) { InitAppointedTests(); } var currentUser = LocalUser.SecurityProvider.CurrentUser; string userName = String.Format(":: {0} {1} {2}", HtmlStore.GetString(currentUser.LastName), HtmlStore.GetString(currentUser.FirstName), HtmlStore.GetString(currentUser.SecondName)); Label lbl = (this.Master.FindControl("userName") as Label); if (String.IsNullOrEmpty(userName.Trim())) { lbl.Text = currentUser.Login; } else { lbl.Text = userName; } TestorCoreUser user = LocalUser.SecurityProvider.CurrentUser; if (LocalUser.IsIntranet) { user.Email = "скрыт"; } user.UserGroups = LocalUser.UserManagement.GetUserGroups(user.UserId); userForm.DataSource = new TestorCoreUser[] { user }; userForm.DataBind(); List <TestSessionStatistics> statistics = new List <TestSessionStatistics>(); statistics.AddRange(LocalUser.TestClient.GetStatistics(new DateTime(1900, 1, 1), DateTime.MaxValue, 0, 0, LocalUser.SecurityProvider.CurrentUser.UserId)); GridViewSessions.DataSource = statistics; GridViewSessions.DataBind(); }
public TestorTreeItem CreateFolder(int parentId, string folderName) { Debug.Assert(parentId >= 0); Debug.Assert(!String.IsNullOrEmpty(folderName)); Provider.TestRoles(TestorUserRole.Administrator, TestorUserRole.Teacher, TestorUserRole.Laboratorian); using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString)) { TestorData td = new TestorData(); TestorData.CoreTestsRow testRow = HtmlStore.CreateCoreTest(td, folderName); CoreTest coreTest = new CoreTest(); CreateCoreTest(testRow, coreTest); dataContext.CoreTests.InsertOnSubmit(coreTest); dataContext.SubmitChanges(); int result = dataContext.AddTestTreeItem(GetId(parentId), (int)TestorItemType.Folder, coreTest.TestId, Provider.CurrentUser.UserId); TestorTreeItem retValue = new TestorTreeItem( result, coreTest.TestId, folderName, TestorItemType.Folder, new TestorTreeItem[] { }); retValue.ItemOwner = Provider.CurrentUser.UserId; return(retValue); } }
public byte[] GetTestHTML(int testId) { Debug.Assert(testId > 0); Provider.TestRoles(TestorUserRole.Administrator, TestorUserRole.Teacher, TestorUserRole.Laboratorian); Provider.TestCoreTestsAccess(testId); List <HtmlStore> retValue = new List <HtmlStore>(); using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString)) { var quests = from c in dataContext.CoreQuestions where c.TestId == testId orderby c.QuestionId select c; foreach (var quest in quests) { HtmlStore store = new HtmlStore(); store.Html = quest.Question; foreach (var answer in quest.CoreAnswers) { HtmlStore answerStore = new HtmlStore(); answerStore.Html = answer.Answer; answerStore.IsTrue = answer.IsTrue; store.SubItems.Add(answerStore); } foreach (var blob in quest.CoreBLOBs) { store.Images.Add(blob.BLOBId, blob.BLOBContent.ToArray()); } retValue.Add(store); } return(DataCompressor.CompressData <HtmlStore[]>(retValue.ToArray())); } }
private void AddAnswer(string answerHTML) { HtmlStore answer = new HtmlStore(); if (answerHTML.Contains("!!!")) { answer.IsTrue = true; answerHTML = answerHTML.Replace("!!!", String.Empty); } else { string aHTML = ReplaceFont(answerHTML); Regex trueRegular = new Regex(@"![#]*![#]*!"); Match match = trueRegular.Match(aHTML); if (match.Success) { answer.IsTrue = true; answerHTML = answerHTML.Remove(match.Index, match.Length); } } answer.Html = answerHTML.Trim(); _currentQuestion.SubItems.Add(answer); }
protected void Page_Load(object sender, EventArgs e) { if (LocalUser.IsIntranet && !Context.User.Identity.IsAuthenticated) { Response.Redirect("~/Login.aspx"); } StartTestParams ncs = LocalUser.TestClient.GetNotCommitedSessions(0, false); if (ncs != null) { Server.Transfer("~/Testing.aspx"); } MultiViewMain.ActiveViewIndex = 0; LabelTestname.Visible = false; requirementsPanel.Visible = false; if (Context.User.Identity.IsAuthenticated) { var currentUser = LocalUser.SecurityProvider.CurrentUser; if (currentUser == null) { FormsAuthentication.SignOut(); Response.Redirect("~/Login.aspx"); } string userName = String.Format(":: {0} {1} {2}", HtmlStore.GetString(currentUser.LastName), HtmlStore.GetString(currentUser.FirstName), HtmlStore.GetString(currentUser.SecondName)); Label lbl = (this.Master.FindControl("userName") as Label); if (String.IsNullOrEmpty(userName.Trim())) { lbl.Text = currentUser.Login; } else { lbl.Text = userName; } } if (InitPageMode()) { InitTree(); } else { InitTestList(); InitNavigator(); if (_currentItem.ItemType == TestorItemType.Test || _currentItem.ItemType == TestorItemType.MasterTest) { MultiViewMain.ActiveViewIndex = 2; postButton.Text = "Приступить к тестированию"; _currentTest = DataCompressor.DecompressData <TestorData>( LocalUser.TestEdit.GetTestSettings(_currentItem.TestId.Value)); testDetails.Text = HttpHandler.GetPreTestingHtml(_currentTest.CoreTests[0]); TestorData.CoreTestsRow test = _currentTest.CoreTests[0]; LabelTestname.Visible = true; RemoteTestingProvider _provider = new RemoteTestingProvider(LocalUser.WebServerProvider, _currentItem, _currentTest, null, false); if (!_provider.IsTestActive) { postButton.Enabled = false; LabelTestname.ForeColor = Color.Red; LabelTestname.Text = _provider.NotActiveMessage; if (_provider.RequirementsTests != null) { postButton.Enabled = false; LabelTestname.Text = "Перед прохлждением данного теста необходимо пройти предыдущие тесты"; LabelTestname.ForeColor = Color.Red; requirementsPanel.Visible = true; requirementsRepeater.DataSource = _provider.RequirementsTests; requirementsRepeater.DataBind(); } return; } if (LocalUser.SecurityProvider.CurrentUser.UserRole == TestorUserRole.Administrator || LocalUser.SecurityProvider.CurrentUser.UserRole == TestorUserRole.Teacher || LocalUser.SecurityProvider.CurrentUser.UserRole == TestorUserRole.Laboratorian) { LabelTestname.Text = String.Format("Тест: <a href=\"/Manage/Statistics.aspx?testId={0}\">{1}</a>", _currentItem.TestId, _currentItem.ItemName.Trim()); } else { LabelTestname.Text = String.Format("Тест: \"{0}\"", _currentItem.ItemName.Trim()); } if (postButton.Attributes[BUTTON_MODE] == NULL_VALUE) { postButton.Attributes[BUTTON_MODE] = NTMODE_VALUE; } else { postButton.Attributes[BUTTON_MODE] = TESTING_VALUE; } postButton.Attributes[BUTTON_VALUE] = _currentItem.ItemId.ToString(); } } }
public EditProvider(HtmlStore quest) { _currentQuestion = quest; State = ProviderState.Testing; }
public void SetHtmlStore(HtmlStore quest) { _currentQuestion = quest; }