private void InitSettings() { if (ViewState["StartTime"] == null) { DateTime sDate = CalendarStart.SelectedDate; ViewState["StartTime"] = new DateTime(sDate.Year, sDate.Month, sDate.Day, 0, 0, 0); } if (ViewState["EndTime"] == null) { DateTime eDate = CalendarEnd.SelectedDate; ViewState["EndTime"] = new DateTime(eDate.Year, eDate.Month, eDate.Day, 23, 59, 0); } if (ViewState["SelectedTest"] == null) { if (Request["testId"] == null) { ViewState["SelectedTest"] = "0"; } else { ViewState["SelectedTest"] = Request["testId"]; int testId = 0; if (!int.TryParse(ViewState["SelectedTest"].ToString(), out testId)) { Response.Redirect("~/Default.aspx"); } var testData = DataCompressor.DecompressData <TestorData>(LocalUser.TestEdit.GetTestSettings(testId)); ViewState["sTest"] = testData.CoreTests[0].TestName; } } if (ViewState["SelectedGroup"] == null) { ViewState["SelectedGroup"] = "0"; } if (ViewState["SelectedUser"] == null) { ViewState["SelectedUser"] = 0; } if (ViewState["sUser"] == null) { ViewState["sUser"] = String.Empty; ViewState["sGroup"] = String.Empty; if (ViewState["sTest"] == null) { ViewState["sTest"] = String.Empty; } } }
public void SetTestSettings(byte[] testSettings) { Debug.Assert(testSettings != null); Provider.TestRoles(TestorUserRole.Administrator, TestorUserRole.Teacher, TestorUserRole.Laboratorian); using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString)) { TestorData data = DataCompressor.DecompressData <TestorData>(testSettings); TestorData.CoreTestsRow test = data.CoreTests[0]; Provider.TestCoreTestsAccess(test.TestId); CoreTest coreTest = dataContext.CoreTests.Where(c => c.TestId == test.TestId).FirstOrDefault(); CreateCoreTest(test, coreTest); dataContext.SubmitChanges(); } }
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 void GetUsers(TestorUserRole selectedRole, TestorUserStatus status, bool getRemoved) { if (SystemStateManager.TestState()) { return; } this.CurrentBindingSource.DataSource = null; SystemStateManager.OnStateChanged(true); _currentThread = new Thread(new ThreadStart(() => { try { _users.Clear(); _users.InsertRange(0, DataCompressor.DecompressData <TestorCoreUser[]>(StaticServerProvider.UserManagement.FindUsers( String.Empty, selectedRole, status, getRemoved, this.SelectedGroup.ItemId, 0))); if ((this.TopLevelControl as Form).IsHandleCreated) { this.Invoke((Action)(() => { OnUsersGetted(); SystemStateManager.OnStateChanged(false); })); } } catch (Exception ex) { if ((this.TopLevelControl as Form).IsHandleCreated) { this.Invoke((Action)(() => { SystemMessage.ShowErrorMessage(ex); SystemStateManager.OnStateChanged(false); })); } } })); _currentThread.Start(); }
public TestorData GetTestSettings(int testId) { byte[] result = StaticServerProvider.TestEdit.GetTestSettings(testId); return DataCompressor.DecompressData<TestorData>(result); }
public void GetTestStatistics() { TestorData td = DataCompressor.DecompressData <TestorData>( LocalUser.TestEdit.GetTestSettings(_testId)); var test = td.CoreTests[0]; lblTest.Text = test.TestName; lblQuestionsNumber.Text = test.QuestionsNumber.ToString(); lblPassingScore.Text = test.PassingScore.ToString(); var tStat = LocalUser.TestClient.GetTestStatistics(_testId, _groupId); if (tStat.AverageScore.HasValue) { lblAverageScore.Text = tStat.AverageScore.Value.ToString("0.00"); } else { lblAverageScore.Text = "-"; } lblPassedPercent.Text = tStat.PassedPercent.ToString("0.00"); if (tStat.TestStatistics.Length > 20) { List <TestStatistics> stat1 = new List <TestStatistics>(); List <TestStatistics> stat2 = new List <TestStatistics>(); int x = tStat.TestStatistics.Length / 2; if (tStat.TestStatistics.Length % 2 > 0) { x++; } for (int i = 0; i < tStat.TestStatistics.Count(); i++) { if (i < x && x > 5) { stat1.Add(tStat.TestStatistics[i]); } else { stat2.Add(tStat.TestStatistics[i]); } } rpScore.DataSource = stat1; rpScoreCount.DataSource = stat1; rpScore.DataBind(); rpScoreCount.DataBind(); rpScore1.DataSource = stat2; rpScoreCount1.DataSource = stat2; rpScore1.DataBind(); rpScoreCount1.DataBind(); phScores.Visible = true; } else { rpScore.DataSource = tStat.TestStatistics; rpScoreCount.DataSource = tStat.TestStatistics; rpScore.DataBind(); rpScoreCount.DataBind(); phScores.Visible = false; } testChart.DataSource = tStat.TestStatistics; testChart.DataBind(); }
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(); } } }
private void saveToolStripMenuItem_Click(object sender, EventArgs e) { if (SystemStateManager.TestState()) { return; } if (treeView.SelectedItem.ItemType != TestorItemType.Test) { SystemMessage.ShowErrorMessage("Выберите тест."); return; } if (saveFileDialog.ShowDialog() == DialogResult.OK) { HtmlStore[] store = DataCompressor.DecompressData <HtmlStore[]>(StaticServerProvider.TestEdit.GetTestHTML(treeView.SelectedItem.TestId.Value)); StringBuilder sb = new StringBuilder(); sb.Append("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">"); sb.Append("<html xmlns=\"http://www.w3.org/1999/xhtml\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/><title>Test</title></head><body>"); int i = 0; foreach (var str in store) { if (i != 0) { sb.Append("<br/>"); } i++; sb.Append(i.ToString() + ". "); sb.Append(str.Html); sb.Append("<br/>"); char cr = 'a'; foreach (var ans in str.SubItems) { sb.Append(cr.ToString() + ")"); if (ans.IsTrue) { sb.Append("!!!"); } sb.Append(ans.Html); sb.Append("<br/>"); cr++; } } sb.Append("</body></html>"); try { FileInfo fi = new FileInfo(saveFileDialog.FileName); DirectoryInfo di = Directory.CreateDirectory(Path.Combine(fi.Directory.FullName, fi.Name + "_files")); foreach (var str in store) { foreach (var image in str.Images) { using (BinaryWriter bw = new BinaryWriter(File.Open(Path.Combine(di.FullName, image.Key.ToString() + ".png"), FileMode.Create))) { bw.Write(image.Value, 0, image.Value.Length); } } } using (TextWriter tw = new StreamWriter(File.Open(saveFileDialog.FileName, FileMode.Create))) { tw.Write(sb.ToString().Replace("#$", di.Name + "/").Replace("#%", ".")); } } catch (Exception ex) { SystemMessage.ShowErrorMessage(ex.Message); } } }
public TestorTreeItem[] SendTests(byte[] testorData, int folderId, int[] groupIds) { Debug.Assert(testorData != null); Debug.Assert(folderId >= 0); Provider.TestRoles(TestorUserRole.Administrator, TestorUserRole.Teacher, TestorUserRole.Laboratorian); using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString)) { TestorData data = DataCompressor.DecompressData <TestorData>(testorData); //data.WriteXml("C:/locator.xml", System.Data.XmlWriteMode.IgnoreSchema); Dictionary <int, CoreTest> xTests = new Dictionary <int, CoreTest>(); foreach (TestorData.CoreTestsRow coreTest in data.CoreTests) { CoreTest test = new CoreTest(); test.TestKey = coreTest.TestKey; test.IsMasterTest = coreTest.IsMasterTest; CreateCoreTest(coreTest, test); xTests.Add(coreTest.TestId, test); dataContext.CoreTests.InsertOnSubmit(test); foreach (int groupId in groupIds) { TestGroup group = new TestGroup(); group.CoreTest = test; group.GroupId = groupId; dataContext.TestGroups.InsertOnSubmit(group); } foreach (var coreQuest in coreTest.GetCoreQuestionsRows()) { CoreQuestion quest = new CoreQuestion(); quest.CoreTest = test; quest.QuestionType = coreQuest.QuestionType; quest.Question = coreQuest.Question; quest.QuestionMark = coreQuest.QuestionMark; try { if (!Convert.IsDBNull(coreQuest.QuestionMetadata)) { quest.QuestionMetadata = coreQuest.QuestionMetadata; } } catch { quest.QuestionMetadata = null; } dataContext.CoreQuestions.InsertOnSubmit(quest); foreach (var coreAnswer in coreQuest.GetCoreAnswersRows()) { CoreAnswer answer = new CoreAnswer(); answer.CoreQuestion = quest; answer.Answer = coreAnswer.Answer; answer.IsTrue = coreAnswer.IsTrue; try { if (!Convert.IsDBNull(coreAnswer.AnswerMetadata)) { answer.AnswerMetadata = coreAnswer.AnswerMetadata; } } catch { answer.AnswerMetadata = null; } dataContext.CoreAnswers.InsertOnSubmit(answer); } foreach (var coreBlob in coreQuest.GetCoreBLOBsRows()) { CoreBLOB blob = new CoreBLOB(); blob.CoreQuestion = quest; blob.BLOBId = coreBlob.BLOBId; blob.BLOBContent = coreBlob.BLOBContent; dataContext.CoreBLOBs.InsertOnSubmit(blob); } } } foreach (var masterTest in data.CoreTests.Where(c => c.IsMasterTest == true)) { var parts = data.CoreMasterParts.Where(c => c.MasterTestId == masterTest.TestId); var test = xTests.Where(c => c.Value.TestKey == masterTest.TestKey).FirstOrDefault(); foreach (var part in parts) { CoreMasterPart masterPart = new CoreMasterPart(); masterPart.CoreTest1 = test.Value; masterPart.CoreTest = xTests.Where( c => c.Key == part.PartTestId).FirstOrDefault().Value; masterPart.QuestionsNumber = part.QuestionsNumber; dataContext.CoreMasterParts.InsertOnSubmit(masterPart); } } foreach (var coreReq in data.CoreRequirements) { CoreRequirement req = new CoreRequirement(); Guid testKey = data.CoreTests.Where(c => c.TestId == coreReq.TestId).FirstOrDefault().TestKey; Guid reqKey = data.CoreTests.Where(c => c.TestId == coreReq.Requirement).FirstOrDefault().TestKey; req.CoreTest = xTests.Where(c => c.Value.TestKey == testKey).FirstOrDefault().Value; req.CoreTest1 = xTests.Where(c => c.Value.TestKey == reqKey).FirstOrDefault().Value; dataContext.CoreRequirements.InsertOnSubmit(req); } try { dataContext.SubmitChanges(); } catch (Exception ex) { throw ex; } List <TestorTreeItem> retValue = new List <TestorTreeItem>(); foreach (var test in xTests) { CoreTest coreTest = test.Value; TestorItemType type = TestorItemType.Test; if (coreTest.IsMasterTest) { type = TestorItemType.MasterTest; } int result = dataContext.AddTestTreeItem(GetId(folderId), (byte)type, coreTest.TestId, Provider.CurrentUser.UserId); TestorTreeItem item = new TestorTreeItem(result, coreTest.TestId, coreTest.TestName, type, null); retValue.Add(item); } return(retValue.ToArray()); } }