Ejemplo n.º 1
0
        public AnonymousTestSettingsForm()
        {
            InitializeComponent();
            string policy = StaticServerProvider.HelperService.GetPropertyValue(SystemProperties.ANONYMOUS_POLICY);

            if (policy == "-1")
            {
                radioButtonNone.Checked = true;
            }
            else if (policy == "0")
            {
                radioButtonAll.Checked = true;
            }
            else
            {
                radioButtonFolder.Checked = true;
                var folders = StaticServerProvider.TestEdit.GetTestParents(int.Parse(policy));
                if (folders.Length == 0)
                {
                    radioButtonNone.Checked = true;
                }
                else
                {
                    _selectedFolder = folders[0];
                    while (_selectedFolder.SubItems != null && _selectedFolder.SubItems.Length != 0)
                    {
                        _selectedFolder = _selectedFolder.SubItems[0];
                    }
                    textBoxFolder.Text = _selectedFolder.ItemName;
                }
            }
        }
Ejemplo n.º 2
0
        public void SelectGroup()
        {
            TestorTreeItem group = SelectedGroup;

            if (SystemStateManager.TestState())
            {
                return;
            }
            SelectSingleItemForm selectGroup = new SelectSingleItemForm(TestingServerItemType.GroupTree);

            if (selectGroup.ShowDialog() == DialogResult.Cancel)
            {
                SelectedGroup = new TestorTreeItem(0, 0, String.Empty, TestorItemType.Group, null);
                if (group.ItemId != SelectedGroup.ItemId)
                {
                    OnSelectedGroupChanged();
                }
                return;
            }
            this.SelectedGroup = selectGroup.SelectedItem;
            if (this.SelectedGroup == null)
            {
                this.CurrentBindingSource.DataSource = _users;
                this.SelectedGroup = new TestorTreeItem(0, 0, String.Empty, TestorItemType.Group, null);
            }
            if (group.ItemId != SelectedGroup.ItemId)
            {
                this.CurrentBindingSource.CurrencyManager.Refresh();
                OnSelectedGroupChanged();
            }
        }
Ejemplo n.º 3
0
 public void AddFolder()
 {
     TreeNode selectedNode = this.SelectedNode;
     InputBox ib = new InputBox("Создать папку", "Имя папки:");
     if (ib.ShowDialog() == DialogResult.OK)
     {
         SystemStateManager.OnStateChanged(true);
         SynchronizationContext context = SynchronizationContext.Current;
         _currentThread = new Thread(new ThreadStart(() =>
         {
             TestorTreeItem folder = StaticServerProvider.TestEdit.CreateFolder(_selectedItem.ItemId, ib.Input);
             folder.IsActive = true;
             TestorTagItem tagItem = new TestorTagItem(folder);
             context.Send(d =>
             {
                 TreeNode tn = new TreeNode(ib.Input)
                 {
                     Tag = tagItem
                 };
                 tn.ContextMenuStrip = _nodeContextMenu;
                 if (selectedNode != null)
                 {
                     selectedNode.Expand();
                     selectedNode.Nodes.Add(tn);
                 }
                 else
                     _rootNode.Nodes.Add(tn);
                 SystemStateManager.OnStateChanged(false);
             }, null);
         }));
         _currentThread.Start();
     }
 }
Ejemplo n.º 4
0
        private void linkLabelGroup_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            SelectSingleItemForm selectGroup = new SelectSingleItemForm(TestingServerItemType.GroupTree);

            if (selectGroup.ShowDialog() == DialogResult.Cancel)
            {
                _selectedGroup = new TestorTreeItem(0, 0, String.Empty, TestorItemType.Group, null);
            }
            _selectedGroup = selectGroup.SelectedItem;
            if (_selectedGroup == null || _selectedGroup.ItemId == 0)
            {
                linkLabelGroup.Text = "не выбрана";
            }
            else
            {
                if (_selectedGroup.ItemName.Length <= 21)
                {
                    linkLabelGroup.Text = _selectedGroup.ItemName;
                }
                else
                {
                    linkLabelGroup.Text = _selectedGroup.ItemName.Substring(0, 21) + "...";
                }
            }
            GetStatistics();
        }
Ejemplo n.º 5
0
        //Не является операцией сервиса
        private TestorTreeItem[] GetGroupTreeItems(ref int i, GetUserGroupTreeResult[] results)
        {
            List <TestorTreeItem> retValue = new List <TestorTreeItem>();
            int    sl    = 0;
            string slStr = String.Empty;

            if (i != -1)
            {
                GetUserGroupTreeResult currentItem = results[i];
                slStr = currentItem.GroupNode;
                sl    = slStr.Split('/').Length;
            }
            for (i++; i < results.Length; i++)
            {
                GetUserGroupTreeResult value = results[i];
                if (value.GroupNode.Split('/').Length <= sl || !value.GroupNode.StartsWith(slStr))
                {
                    i--;
                    break;
                }
                TestorTreeItem item = new TestorTreeItem(value.GroupId, null, value.GroupName,
                                                         TestorItemType.Group, GetGroupTreeItems(ref i, results));
                item.GroupCode = value.GroupCode;
                retValue.Add(item);
            }
            return(retValue.ToArray());
        }
Ejemplo n.º 6
0
        private void linkLabelTest_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            SelectSingleItemForm selectTest = new SelectSingleItemForm(_resultUser, TestingServerItemType.TestTree);

            selectTest.ShowDialog();
            _selectedTest = selectTest.SelectedItem;
            if (_selectedTest != null && (_selectedTest.ItemType != TestorItemType.Test &&
                                          _selectedTest.ItemType != TestorItemType.MasterTest))
            {
                MessageBox.Show("Для начала тестирования необходимо выбрать тест.",
                                "Выбор теста", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                _selectedTest = null;
            }
            if (_selectedTest == null || _selectedTest.TestId == 0)
            {
                linkLabelTest.Text = "не выбран";
            }
            else
            {
                if (_selectedTest.ItemName.Length <= 21)
                {
                    linkLabelTest.Text = _selectedTest.ItemName;
                }
                else
                {
                    linkLabelTest.Text = _selectedTest.ItemName.Substring(0, 21) + "...";
                }
            }
            GetStatistics();
        }
Ejemplo n.º 7
0
        private void tsbTestContent_Click(object sender, EventArgs e)
        {
            TestorTreeItem        item       = treeView.SelectedItem;
            MasterTestContentForm masterForm = new MasterTestContentForm(true,
                                                                         item.TestId.HasValue ? item.TestId.Value : -1);

            masterForm.ShowDialog();
        }
Ejemplo n.º 8
0
 protected void TreeViewTests_SelectedNodeChanged(object sender, EventArgs e)
 {
     if (TreeViewTests.SelectedNode.Parent != null)
     {
         TestorTreeItem tti = new TestorTreeItem();
         tti.ItemId = int.Parse(TreeViewTests.SelectedNode.Value);
         ViewState["SelectedFolder"] = tti;
         lbSelectedFolder.Text       = TreeViewTests.SelectedNode.Text;
     }
 }
Ejemplo n.º 9
0
 void groupTreeView_ItemSelected(object sender, TestorItemSelectedEventArgs e)
 {
     if (e.Item.ItemId <= 0)
     {
         _selectedItem = null;
     }
     else
     {
         _selectedItem = e.Item;
     }
 }
Ejemplo n.º 10
0
 void testTreeView_ItemSelected(object sender, TestorItemSelectedEventArgs e)
 {
     if (e.Item.ItemType != TestorItemType.MasterTest && e.Item.ItemType != TestorItemType.Test &&
         e.Item.ItemType != TestorItemType.Group)
     {
         buttonAdd.Enabled  = false;
         labelTestName.Text = "не выбран";
         return;
     }
     _selectedItem      = e.Item;
     buttonAdd.Enabled  = true;
     labelTestName.Text = e.Item.ItemName;
 }
Ejemplo n.º 11
0
        private TestorTreeItem[] ProcessItems(TreeNode rootNode)
        {
            List <TestorTreeItem> retValue = new List <TestorTreeItem>();

            foreach (TreeNode tn in rootNode.Nodes)
            {
                TestorTreeItem item = new TestorTreeItem();
                item.ItemName = tn.Text;
                item.ItemType = TestorItemType.Group;
                item.SubItems = ProcessItems(tn);
                retValue.Add(item);
            }
            return(retValue.ToArray());
        }
Ejemplo n.º 12
0
        public TestorTreeItem[] GetAppointedTests()
        {
            List <TestorTreeItem> retValue = new List <TestorTreeItem>();

            using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString))
            {
                var tests = dataContext.GetAppointedTests(Provider.CurrentUser.UserId);
                foreach (var test in tests.Where(c => c.PassedCount == 0))
                {
                    TestorTreeItem newItem = new TestorTreeItem(test.NodeId, 0, test.TestName, TestorItemType.Test, new TestorTreeItem[] { });
                    retValue.Add(newItem);
                }
            }
            return(retValue.ToArray());
        }
Ejemplo n.º 13
0
        protected void Page_Load(object sender, EventArgs e)
        {
            this.LoadComplete     += new EventHandler(TestingForm_LoadComplete);
            warningMessage.Visible = false;
            RemoteTestingProvider provider    = null;
            StartTestParams       startParams = LocalUser.TestClient.GetNotCommitedSessions(0, false);

            if (Session[SESSIONPROVIDER] == null)
            {
                if (startParams == null)
                {
                    Response.Redirect("~/Default.aspx");
                }
                var testSettings = startParams.TestSettings;
                TestorData.CoreTestsRow coreTest     = testSettings.CoreTests[0];
                TestorTreeItem          selectedTest = new TestorTreeItem(0, coreTest.TestId, coreTest.TestName,
                                                                          coreTest.IsMasterTest ? TestorItemType.MasterTest : TestorItemType.Test, null);
                provider = new RemoteTestingProvider(LocalUser.WebServerProvider, selectedTest, testSettings, startParams, false);
                provider.ProviderMode    = ProviderMode.WebMode;
                Session[SESSIONPROVIDER] = provider;
            }
            else
            {
                provider = (RemoteTestingProvider)Session[SESSIONPROVIDER];
                if (provider == null || provider.State == ProviderState.Results)
                {
                    Session[SESSIONPROVIDER] = null;
                    if (LocalUser.IsIntranet && provider.CurrentUser.UserRole == TestorUserRole.Student)
                    {
                        FormsAuthentication.SignOut();
                    }
                    Response.Redirect("~/Default.aspx");
                }
                provider.UnsubscribeWarningMessage();
            }
            provider.CurrentUniqId = (string)Session["UniqId"];
            if (startParams != null && startParams.AdditionalTime.HasValue)
            {
                provider.AdditionalTime = startParams.AdditionalTime.Value;
            }
            if (!IsPostBack)
            {
                string testName = String.Format("&laquo;{0}&raquo;", provider.TestName);
                (this.Master.FindControl("LabelTest") as Label).Text = testName + " :: <i>" + provider.StudentDisplayName + "</i>";
                this.Title = String.Format("Студент - \"{0}\"", provider.StudentDisplayName);
            }
            TestingHost.InitTestingProcess(provider, ClientScript);
        }
Ejemplo n.º 14
0
        private void buttonSelectFolder_Click(object sender, EventArgs e)
        {
            SelectSingleItemForm selectGroup = new SelectSingleItemForm(TestingServerItemType.FolderTree);

            if (selectGroup.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            _selectedFolder = selectGroup.SelectedItem;
            if (_selectedFolder != null)
            {
                textBoxFolder.Text = _selectedFolder.ItemName;
            }
            else
            {
                textBoxFolder.Text = String.Empty;
            }
        }
Ejemplo n.º 15
0
 public RemoteTestingProvider(IServerProvider webServerProvider, TestorTreeItem selectedTest, TestorData testorData, StartTestParams startParams, bool useCompression)
 {
     _webServerProvider = webServerProvider;
     _selectedTest      = selectedTest;
     _testorData        = testorData;
     _coreTest          = CoreTestRowAdapter.GetAdapter(_testorData.CoreTests[0]);
     _useCompression    = useCompression;
     _startParams       = startParams;
     if (_startParams != null)
     {
         InitStartParams();
         _ansIds.AddRange(_startParams.AnsIds);
         _score = _startParams.CurrentScore;
     }
     else
     {
         State = ProviderState.PreTesting;
     }
 }
Ejemplo n.º 16
0
        public AddUserForm(TestorCoreUser user)
            : this()
        {
            _isAlterMode                 = true;
            _resultUser                  = user;
            textBoxLastName.Text         = _resultUser.LastName;
            textBoxFirstName.Text        = _resultUser.FirstName;
            textBoxSecondName.Text       = _resultUser.SecondName;
            radioButtonMale.Checked      = _resultUser.Sex;
            radioButtonFemale.Checked    = !_resultUser.Sex;
            dateTimePickerBirthday.Value = _resultUser.Birthday >= dateTimePickerBirthday.MinDate ? _resultUser.Birthday : dateTimePickerBirthday.MinDate;
            textBoxStudNumber.Text       = _resultUser.StudNumber;
            SynchronizationContext context = SynchronizationContext.Current;

            SystemStateManager.OnStateChanged(true);
            _currentThread = new Thread(new ThreadStart(() =>
            {
                try
                {
                    _groups = StaticServerProvider.UserManagement.GetUserGroups(_resultUser.UserId);
                    context.Send(d =>
                    {
                        if (_groups.Length > 0)
                        {
                            _selectedGroup    = (d as TestorTreeItem[])[0];
                            textBoxGroup.Text = _selectedGroup.ItemName;
                        }
                        SystemStateManager.OnStateChanged(false);
                    }, _groups);
                }
                catch (Exception ex)
                {
                    context.Send(d =>
                    {
                        SystemMessage.ShowErrorMessage(d as Exception);
                        SystemStateManager.OnStateChanged(false);
                    }, ex);
                }
            }));
            _currentThread.Start();
            buttonSelectGroup.Enabled = !_isAlterMode;
        }
Ejemplo n.º 17
0
        private List <TestorTreeItem> GetItems(bool isChecked)
        {
            List <TestorTreeItem> retValue   = new List <TestorTreeItem>();
            IEnumerable           collection = null;

            if (isChecked)
            {
                collection = clbAddSettings.CheckedItems;
            }
            else
            {
                collection = clbAddSettings.Items;
            }
            foreach (var item in collection)
            {
                TestorTreeItem treeItem = (TestorTreeItem)item;
                retValue.Add(treeItem);
            }
            return(retValue);
        }
Ejemplo n.º 18
0
        private void InitAnonymouseView()
        {
            TreeViewTests.Nodes.Clear();
            TreeNode rootNode = new TreeNode("Все тесты", "tests", "~/Images/computer.png");

            TreeViewTests.Nodes.Add(rootNode);
            var items = LocalUser.TestEdit.GetServerTree(0, 0, TestingServerItemType.FolderTree);

            AddTreeNodes(items, rootNode);
            rootNode.Expand();

            string policy = LocalUser.HelperService.GetPropertyValue(SystemProperties.ANONYMOUS_POLICY);

            if (policy == "-1")
            {
                radioButtonNone.Checked = true;
            }
            else if (policy == "0")
            {
                radioButtonAll.Checked = true;
            }
            else
            {
                radioButtonFolder.Checked = true;
                var folders = LocalUser.TestEdit.GetTestParents(int.Parse(policy));
                if (folders.Length == 0)
                {
                    radioButtonNone.Checked = true;
                }
                else
                {
                    TestorTreeItem selectedFolder = folders[0];
                    while (selectedFolder.SubItems != null && selectedFolder.SubItems.Length != 0)
                    {
                        selectedFolder = selectedFolder.SubItems[0];
                    }
                    lbSelectedFolder.Text       = selectedFolder.ItemName;
                    ViewState["SelectedFolder"] = selectedFolder;
                }
            }
        }
Ejemplo n.º 19
0
        //Не является операцией сервиса
        private TestorTreeItem[] GetTestTreeItems(ref int i, GetTestTreeByLevelResult[] results, bool isActive)
        {
            List <TestorTreeItem> retValue = new List <TestorTreeItem>();
            int sl = 0;

            if (i != -1)
            {
                GetTestTreeByLevelResult currentItem = results[i];
                sl = currentItem.TreeNode.Split('/').Length;
            }
            for (i++; i < results.Length; i++)
            {
                GetTestTreeByLevelResult value = results[i];
                if (value.TreeNode.Split('/').Length <= sl)
                {
                    i--;
                    break;
                }
                TestorItemType type = (TestorItemType)value.NodeType;
                if (type == TestorItemType.Folder)
                {
                    TestorTreeItem item = new TestorTreeItem(value.NodeId, value.TestId.Value, value.TestName,
                                                             type, GetTestTreeItems(ref i, results, isActive));
                    item.ItemOwner = value.ItemOwner;
                    item.IsActive  = value.TestTreeIsActive;
                    if (!isActive || value.TestTreeIsActive == true)
                    {
                        retValue.Add(item);
                    }
                }
                else if (type == TestorItemType.Test || type == TestorItemType.MasterTest)
                {
                    TestorTreeItem item = new TestorTreeItem(value.NodeId, value.TestId.Value, value.TestName,
                                                             type, GetTestTreeItems(ref i, results, isActive));
                    item.ItemOwner = value.ItemOwner;
                    item.IsActive  = value.TestTreeIsActive;
                    retValue.Add(item);
                }
            }
            return(retValue.ToArray());
        }
Ejemplo n.º 20
0
        public void ProcessControlsEnableProp()
        {
            bool           isNonAccess = false;
            TestorTreeItem item        = treeView.SelectedItem;

            if (StaticServerProvider.CurrentUser.UserRole != TestorUserRole.Administrator && StaticServerProvider.CurrentUser.UserId != item.ItemOwner)
            {
                isNonAccess = true;
            }

            bool isRootNode = item.ItemId == 0 || isNonAccess;

            tssShowFolder.Visible = item.ItemType == TestorItemType.Folder && !isRootNode;
            tsbIsActive.Visible   = tssShowFolder.Visible;

            if (item.ItemType == TestorItemType.Folder && item.ItemId != 0)
            {
                tsbIsActive.Checked = item.IsActive;
            }

            tsbDelete.Enabled = !isRootNode;
            bool showFolderName = item.ItemType == TestorItemType.Folder;

            tlsFolder.Visible                   = showFolderName;
            toolStripSeparator3.Visible         = showFolderName;
            tscbFolder.Visible                  = showFolderName;
            tsbAddFolder.Enabled                = showFolderName;
            masterTestToolStripMenuItem.Enabled = showFolderName;
            tsbSend.Enabled = showFolderName;
            if (item.ItemType == TestorItemType.Folder)
            {
                tscbFolder.Text           = GetFolderName(treeView.SelectedNode);
                tscbFolder.SelectionStart = tscbFolder.Text.Length - 1;
            }
            else
            {
                tscbFolder.Text = String.Empty;
            }
            renameToolStripMenuItem.Enabled = !isNonAccess;
            deleteToolStripMenuItem.Enabled = !isNonAccess;
        }
Ejemplo n.º 21
0
        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);
            }
        }
Ejemplo n.º 22
0
        void _serviceProvider_ItemSelected(object sender, TestorItemSelectedEventArgs e)
        {
            ProcessControlsEnableProp();
            if (_adapter != null)
            {
                if (_adapter.HasChanges)
                {
                    _preNode.Text = _adapter.TestName;
                    treeView.SetTestSettings(_adapter.TestorData);
                }
                tvGroups.SetTestGroups((_preNode.Tag as TestorTagItem).TreeItem.TestId.Value);
            }
            TestorTreeItem item = e.Item;

            if (StaticServerProvider.CurrentUser.UserRole != TestorUserRole.Administrator && StaticServerProvider.CurrentUser.UserId != item.ItemOwner)
            {
                testSettings.Enabled = false;
                tvGroups.Enabled     = false;
                _adapter             = null;
                return;
            }
            bool isTest = item.ItemType == TestorItemType.Test || item.ItemType == TestorItemType.MasterTest;

            testSettings.Enabled = isTest;
            tvGroups.Enabled     = testSettings.Enabled;
            if (isTest)
            {
                int testId = item.TestId ?? 0;
                tvGroups.ProcessTestGroups(testId);
                TestorData settings = treeView.GetTestSettings(testId);
                _adapter = new TestSettingsAdapter(settings);
                testSettings.SetDataSet(_adapter);
                _preNode = e.TreeEventArgs.Node;
            }
            else if (item.ItemType == TestorItemType.Folder && item.ItemId != 0)
            {
                tsbIsActive.Checked = item.IsActive;
            }
        }
Ejemplo n.º 23
0
        private void InitNavigator()
        {
            Panel pathPanel = (Panel)this.Master.FindControl("PanelPath");

            TestorTreeItem[] parents = LocalUser.TestEdit.GetTestParents(_objectID);
            if (parents == null)
            {
                Response.Redirect("/");
                return;
            }
            TestorTreeItem rootItem    = new TestorTreeItem(0, 0, "Все тесты", TestorItemType.Folder, parents);
            TestorTreeItem currentItem = null;

            do
            {
                if (currentItem == null)
                {
                    currentItem = rootItem;
                }
                else
                {
                    currentItem = currentItem.SubItems[0];
                }
                HyperLink hl = new HyperLink();
                hl.Text        = currentItem.ItemName;
                hl.NavigateUrl = "Default.aspx?objectId=" + currentItem.ItemId.ToString();
                Label lb = new Label()
                {
                    Text = "/"
                };
                if (currentItem != rootItem)
                {
                    pathPanel.Controls.Add(lb);
                }
                pathPanel.Controls.Add(hl);
            } while (currentItem.SubItems.Length > 0);
            _currentItem = currentItem;
        }
Ejemplo n.º 24
0
        public void ProcessControlsEnableProp()
        {
            bool           isNonAccess = false;
            TestorTreeItem item        = treeView.SelectedItem;

            if (StaticServerProvider.CurrentUser.UserRole != TestorUserRole.Administrator && StaticServerProvider.CurrentUser.UserId != item.ItemOwner)
            {
                isNonAccess = true;
            }

            bool isRootNode = item.ItemId == 0 || isNonAccess;

            tssShowFolder.Visible = item.ItemType == TestorItemType.Folder && !isRootNode;
            tsbIsActive.Visible   = tssShowFolder.Visible;

            tsbDelete.Enabled = !isRootNode;
            bool showFolderName = item.ItemType == TestorItemType.Folder;

            tsbAddFolder.Enabled = showFolderName;
            masterTestToolStripMenuItem.Enabled = showFolderName;
            tsbTestContent.Enabled          = item.ItemType == TestorItemType.MasterTest && !isNonAccess;
            renameToolStripMenuItem.Enabled = !isNonAccess;
            deleteToolStripMenuItem.Enabled = !isNonAccess;
        }
Ejemplo n.º 25
0
 private void buttonOK_Click(object sender, EventArgs e)
 {
     _password = textBoxPassword.Text;
     if (!IsTeacherMode)
     {
         if (_resultUser == null)
         {
             MessageBox.Show("Для начала тестирования необходимо выбрать пользователя.",
                             "Выбор пользователя", MessageBoxButtons.OK, MessageBoxIcon.Warning);
             return;
         }
         SetChildEnable(false);
         StaticServerProvider.Logout();
         LoginProvider loginProvider = LoginProvider.Login(_resultUser.Login, textBoxPassword.Text, LoginHelper.Server, LoginHelper.SEND_TIMEOUT, null,
                                                           new LoginProvider.LoginResultDelegate((hasPassword, errorMessage) =>
         {
             this.Invoke((Action)(() =>
             {
                 if (hasPassword)
                 {
                     if (String.IsNullOrEmpty(LoginHelper.Server))
                     {
                         string[] databases = StaticServerProvider.TestClient.GetDatabaseNamesList();
                         if (databases.Length > 0)
                         {
                             string dbPassword = StaticServerProvider.TestClient.GetDatabasePassword(databases[0]);
                             using (System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(String.Format(
                                                                                                                           "Data Source=(local);Initial Catalog={0};User ID=testingUser;Password={1}", databases[0], dbPassword)))
                             {
                                 System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand("EXEC InitDbSettings;", conn);
                                 conn.Open();
                                 cmd.ExecuteNonQuery();
                                 conn.Close();
                                 Console.WriteLine(cmd.ExecuteScalar());
                             }
                         }
                     }
                     StartTestParams ncs = StaticServerProvider.TestClient.GetNotCommitedSessions(_resultUser.UserId, false);
                     TestorData testSettings = null;
                     if (ncs == null)
                     {
                         SelectSingleItemForm selectTest = new SelectSingleItemForm(_resultUser, TestingServerItemType.ActiveTestTree);
                         if (selectTest.ShowDialog() != DialogResult.OK)
                         {
                             textBoxPassword.Text = String.Empty;
                             StaticServerProvider.Logout();
                             LoginHelper.AnonymousLogin();
                             SetChildEnable(true);
                             return;
                         }
                         _selectedTest = selectTest.SelectedItem;
                         if (_selectedTest == null || _selectedTest.ItemType != TestorItemType.Test &&
                             _selectedTest.ItemType != TestorItemType.MasterTest)
                         {
                             MessageBox.Show("Для начала тестирования необходимо выбрать тест.",
                                             "Выбор теста", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                             _selectedTest = null;
                             StaticServerProvider.Logout();
                             LoginHelper.AnonymousLogin();
                             SetChildEnable(true);
                             return;
                         }
                         testSettings = selectTest.TestSettings;
                     }
                     else
                     {
                         testSettings = ncs.TestSettings;
                         TestorData.CoreTestsRow coreTest = testSettings.CoreTests[0];
                         _selectedTest = new TestorTreeItem(0, coreTest.TestId, coreTest.TestName,
                                                            coreTest.IsMasterTest ? TestorItemType.MasterTest : TestorItemType.Test, null);
                     }
                     RemoteTestingProvider provider = new RemoteTestingProvider(null, _selectedTest,
                                                                                testSettings, ncs, true);
                     TestForm testForm = new TestForm(provider);
                     testForm.ShowDialog();
                     comboBoxUserType_SelectedIndexChanged(sender, e);
                     StaticServerProvider.Logout();
                     LoginHelper.AnonymousLogin();
                     SetChildEnable(true);
                 }
                 else
                 {
                     SystemMessage.ShowServerErrorMessage(errorMessage);
                     textBoxPassword.Text = String.Empty;
                     StaticServerProvider.Logout();
                     LoginHelper.AnonymousLogin();
                     SetChildEnable(true);
                     return;
                 }
             }));
         }));
     }
     else
     {
         SetFormEnableMode(false);
         _userName = textBoxStudentName.Text;
         StaticServerProvider.Logout();
         LoginProvider loginProvider = LoginProvider.Login(_userName, _password, LoginHelper.Server, LoginHelper.SEND_TIMEOUT, null,
                                                           new LoginProvider.LoginResultDelegate((hasPassword, errorMessage) =>
         {
             this.Invoke((Action)(() =>
             {
                 SetFormEnableMode(true);
                 if (hasPassword)
                 {
                     StatisticsForm statistics = new StatisticsForm(false);
                     statistics.MdiParent = this.MdiParent;
                     statistics.Dock = DockStyle.Fill;
                     statistics.ControlBox = false;
                     statistics.Show();
                     comboBoxUserType.SelectedIndex = 0;
                     textBoxStudentName.Focus();
                     SetChildEnable(true);
                 }
                 else
                 {
                     SystemMessage.ShowServerErrorMessage(errorMessage);
                     StaticServerProvider.Logout();
                     LoginHelper.AnonymousLogin();
                     SetChildEnable(true);
                     return;
                 }
             }));
         }));
     }
 }
Ejemplo n.º 26
0
        protected void postButton_Click(object sender, EventArgs e)
        {
            var activeView = MultiViewMain.GetActiveView();

            if (activeView == ViewLogin)
            {
                LocalUser.SetPropertyValue(SystemProperties.SESSION_ALLOW_INTRANET, CheckBoxAllowIntranet.Checked ? SystemProperties.SESSION_TRUE : SystemProperties.SESSION_FALSE);
                LocalUser.SetPropertyValue(SystemProperties.SESSION_ALLOW_PUBLIC, CheckBoxAllowPublic.Checked ? SystemProperties.SESSION_TRUE : SystemProperties.SESSION_FALSE);

                LocalUser.SetPropertyValue(SystemProperties.SMTP_FROM, TextBoxFrom.Text.Trim());
                LocalUser.SetPropertyValue(SystemProperties.SMTP_SERVER, TextBoxSmtpServer.Text.Trim());
                LocalUser.SetPropertyValue(SystemProperties.SMTP_LOGIN, TextBoxSmtpLogin.Text.Trim());
                if (TextBoxSmtpPassword.Text.Trim() != String.Empty)
                {
                    LocalUser.SetPropertyValue(SystemProperties.SMTP_PASSWORD, TextBoxSmtpPassword.Text);
                }
                if (LocalUser.GetPropertyValue(SystemProperties.SESSION_LOCAL_NETWORKS) != TextBoxLocalNetworks.Text.Trim())
                {
                    LocalUser.SetPropertyValue(SystemProperties.SESSION_LOCAL_NETWORKS, TextBoxLocalNetworks.Text.Trim());
                }

                LocalUser.SetPropertyValue(SystemProperties.REGISTER_MAIL, TextBoxRegMailContext.Text.Trim());
                LocalUser.SetPropertyValue(SystemProperties.RESTORE_MAIL, TextBoxRegRestore.Text.Trim());
            }
            else if (activeView == ViewAnonym)
            {
                string value = String.Empty;
                if (radioButtonNone.Checked)
                {
                    value = "-1";
                }
                else if (radioButtonAll.Checked)
                {
                    value = "0";
                }
                else
                {
                    TestorTreeItem selFolder = (ViewState["SelectedFolder"] as TestorTreeItem);
                    if (selFolder == null)
                    {
                        value = "-1";
                    }
                    else
                    {
                        value = selFolder.ItemId.ToString();
                    }
                }
                LocalUser.HelperService.SetPropertyValue(SystemProperties.ANONYMOUS_POLICY, value);
            }
            else if (activeView == ViewUserDetails)
            {
                if (TextBoxPassword.Text != String.Empty || TextBoxSecondPassword.Text != String.Empty)
                {
                    if (TextBoxPassword.Text != TextBoxSecondPassword.Text)
                    {
                        aspErrorMessage.Text    = "Пароли не совпадают";
                        aspErrorMessage.Visible = true;
                        return;
                    }
                    else
                    {
                        using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString))
                        {
                            var user = dataContext.Users.Where(c => c.UserId == (int)GridViewUsers.SelectedValue).FirstOrDefault();
                            if (user == null || user.UserRole != (short)TestorUserRole.Student)
                            {
                                aspErrorMessage.Text    = "Ошибка. Не выбран пользователь";
                                aspErrorMessage.Visible = true;
                                return;
                            }
                            user.Password = TextBoxPassword.Text;
                            dataContext.SubmitChanges();
                        }
                    }
                }
            }
            changesIndicator.Text    = String.Format(" Изменения сохранены [{0}]", DateTime.Now.ToShortTimeString());
            changesIndicator.Visible = true;
        }
Ejemplo n.º 27
0
        protected void Btn_Reg_Click(object sender, EventArgs e)
        {
            int groupId = 0;

            TextBoxPassword.Attributes["Value"]       = TextBoxPassword.Text;
            TextBoxSecondPassword.Attributes["Value"] = TextBoxSecondPassword.Text;
            if (LocalUser.IsIntranet)
            {
                if (ViewState["SelectedNode"] != null)
                {
                    int.TryParse((string)ViewState["SelectedNode"], out groupId);
                }

                if (groupId == 0 || ViewState["SelectedNode"] == null)
                {
                    aspErrorMessage.Visible = true;
                    aspErrorMessage.Text    = "Выберите группу (Факультет -> Кафедра -> Группа).";
                    return;
                }
            }
            if (TextBoxCaptcha.Text.ToLower() != this.Session["CaptchaImageText"].ToString().ToLower())
            {
                aspErrorMessage.Visible          = true;
                aspErrorMessage.Text             = "Введён неправильный секретный код";
                TextBoxCaptcha.Text              = String.Empty;
                this.Session["CaptchaImageText"] = GenerateRandomCode();
                return;
            }
            else
            {
                TextBoxCaptcha.Text = String.Empty;
                this.Session["CaptchaImageText"] = GenerateRandomCode();
                aspErrorMessage.Visible          = false;
            }
            if (TextBoxLogin.Text.Trim().Contains(' ') || TextBoxPassword.Text.Contains(' '))
            {
                aspErrorMessage.Visible = true;
                aspErrorMessage.Text    = "Логин и пароль не могут содержать пробелы";
                return;
            }
            if (TextBoxPassword.Text != TextBoxSecondPassword.Text)
            {
                aspErrorMessage.Visible = true;
                aspErrorMessage.Text    = "Пароли не совпадают";
                return;
            }
            using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString))
            {
                string eMail = TextBoxEmail.Text.Trim().ToLower();
                if (!String.IsNullOrEmpty(eMail) && dataContext.Users.Where(c => c.Email == eMail).Count() > 0)
                {
                    aspErrorMessage.Visible = true;
                    aspErrorMessage.Text    = "Данный e-mail уже используется";
                    return;
                }
                if (!LocalUser.IsIntranet)
                {
                    if (TextBoxGroup.Text.Trim() != String.Empty)
                    {
                        groupId = dataContext.GetGroupIdByCode(TextBoxGroup.Text.Trim());
                        if (groupId == 0)
                        {
                            aspErrorMessage.Visible = true;
                            aspErrorMessage.Text    = "Неверный код группы";
                            return;
                        }
                    }
                }
                TestorTreeItem[] groups = new TestorTreeItem[] { };
                if (groupId != 0)
                {
                    TestorTreeItem group = new TestorTreeItem(groupId, 0, String.Empty, TestorItemType.Group, new TestorTreeItem[] { });
                    groups = new TestorTreeItem[] { group };
                }
                string password = TextBoxPassword.Text.Trim();
                if (String.IsNullOrEmpty(password))
                {
                    password = "******";
                }
                TestorCoreUser user = new TestorCoreUser()
                {
                    LastName   = TextBoxLastName.Text.Trim(),
                    FirstName  = TextBoxName.Text.Trim(),
                    SecondName = TextBoxSecondName.Text.Trim(),
                    Password   = password,
                    Sex        = DropDownListGender.SelectedIndex == 0 ? true : false,
                    UserGroups = groups,
                    UserRole   = TestorUserRole.Student,
                    Status     = LocalUser.IsIntranet ? TestorUserStatus.LocalNetUser : TestorUserStatus.NotActivated,
                    StudNumber = TextBoxStudNumber.Text.Trim()
                };
                if (LocalUser.IsIntranet)
                {
                    user.Login       = Guid.NewGuid().ToString();
                    user.IsLocalUser = true;
                    user.Email       = String.Format("{0}@{1}.testor.ru", user.Login, Guid.NewGuid().ToString());
                }
                else
                {
                    user.Login = TextBoxLogin.Text.Trim();
                    user.Email = TextBoxEmail.Text.Trim().ToLower();
                }
                try
                {
                    TestorCoreUser coreUser = LocalUser.UserManagement.CreateUser(user);
                    ActivationKey  key      = new ActivationKey();
                    key.ActivationKey1 = Guid.NewGuid().ToString();
                    key.UserId         = coreUser.UserId;
                    dataContext.ActivationKeys.InsertOnSubmit(key);
                    if (LocalUser.IsIntranet)
                    {
                        dataContext.SubmitChanges();
                        FormsAuthentication.RedirectFromLoginPage(coreUser.Login, false);
                        return;
                    }
                    else
                    {
                        dataContext.SubmitChanges();
                        SendActivationMail(coreUser.Email, key.ActivationKey1, coreUser.Login);
                    }
                }
                catch (Exception ex)
                {
                    aspErrorMessage.Visible = true;
                    aspErrorMessage.Text    = ex.Message;
                    return;
                }
                MultiView1.ActiveViewIndex = 1;
            }
        }
Ejemplo n.º 28
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());
            }
        }
Ejemplo n.º 29
0
 public TestorTagItem(TestorTreeItem treeItem)
 {
     _treeItem = treeItem;
 }