Esempio n. 1
0
        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;
                }
            }
        }
Esempio n. 2
0
        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();
            }
        }
Esempio n. 3
0
        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;
            }
        }
Esempio n. 4
0
 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();
 }
Esempio n. 5
0
 public TestorData GetTestSettings(int testId)
 {
     byte[] result = StaticServerProvider.TestEdit.GetTestSettings(testId);
     return DataCompressor.DecompressData<TestorData>(result);
 }
Esempio n. 6
0
        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();
        }
Esempio n. 7
0
        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();
                }
            }
        }
Esempio n. 8
0
        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);
                }
            }
        }
Esempio n. 9
0
        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());
            }
        }