Example #1
0
        public byte[] GetTestSettings(int testId)
        {
            Debug.Assert(testId > 0);

            Provider.TestRoles(TestorUserRole.Administrator, TestorUserRole.Teacher, TestorUserRole.Laboratorian,
                               TestorUserRole.Student, TestorUserRole.Anonymous);

            var data = Helper.GetTestSettingsData(testId);

            return(DataCompressor.CompressData(data));
        }
Example #2
0
        public Player()
        {
            var options = MulticastConnectionOptions.Create();

            _guid        = Guid.NewGuid();
            _converter   = new Converter <DataModel>();
            _transmitter = new UdpMulticastConnection(options);

            _waveIn = new WaveIn {
                WaveFormat = WaveFormat.CreateIeeeFloatWaveFormat(44100, 2)
            };
            _compressor = new DataCompressor();
        }
Example #3
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;
                }
            }
        }
Example #4
0
        public byte[] FindUsers(string userInfo, TestorUserRole userRole, TestorUserStatus userStatus, bool getRemoved, int groupId, int takeCount)
        {
            if (Provider.CurrentUser.UserRole == TestorUserRole.NotDefined || Provider.CurrentUser.UserRole == TestorUserRole.Anonymous ||
                Provider.CurrentUser.UserRole == TestorUserRole.Student)
            {
                if (userRole != TestorUserRole.NotDefined && userRole != TestorUserRole.Anonymous &&
                    userRole != TestorUserRole.Student)
                {
                    Provider.ThrowAccessFaultException();
                }
            }

            return(DataCompressor.CompressData <TestorCoreUser[]>(UserSearchHelper.FindUsers(userInfo, userRole, userStatus, groupId, getRemoved, takeCount, true)));
        }
Example #5
0
        public Package Pack(IEnumerable <DataTable> data)
        {
            DataSerializer serializer = new DataSerializer(_serializationStrategy);
            DataCompressor compressor = new DataCompressor(_compressionStrategy);

            var turbinesDataJson   = serializer.Serialize(data);
            var turbinesDataBinary = compressor.Compress(turbinesDataJson);

            return(new Package
            {
                DataType = PayloadDataType.Data10Minutes,
                EncryptionAlgorithm = EncryptionAlgorithmType.AES,
                Retention = -1,
                TimeStamp = DateTime.Now,
                Payload = turbinesDataBinary
            });
        }
Example #6
0
 public void SetTestSettings(TestorData testorData)
 {
     SystemStateManager.OnStateChanged(true);
     byte[] data = DataCompressor.CompressData(testorData);
     SynchronizationContext context = SynchronizationContext.Current;
     _currentThread = new Thread(new ThreadStart(() =>
     {
         StaticServerProvider.TestEdit.SetTestSettings(data);
         if ((this.TopLevelControl as Form).IsHandleCreated)
         {
             context.Send(d =>
                 {
                     SystemStateManager.OnStateChanged(false);
                 }, null);
         }
     }));
     _currentThread.Start();
 }
Example #7
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();
            }
        }
Example #8
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;
            }
        }
Example #9
0
        private static void Main()
        {
            AppDomain currentDomain = AppDomain.CurrentDomain;

            currentDomain.UnhandledException += MyHandler;
            //TODO settings icinde birden fazla source and destination okunabilmeli, tek klasor yedeklenmeyecek. array olmasi gerekiyor
            var settings = JsonHelper.LoadJson();

            //TODO klasor yapisi : DestionationFolder\\2020\\11\05\\SourceFolderName_12_30.zip seklinde olmali
            foreach (var setting in settings)
            {
                var targetFolderName = $"{setting.SourcePath.Substring(setting.SourcePath.LastIndexOf('\\') + 1)}_{DateTime.Now:HH_mm}";
                var folderPath       = Directory.CreateDirectory(Path.Combine(setting.DestinationPath, DateTime.Now.Year.ToString(), DateTime.Now.Month.ToString(), DateTime.Now.Day.ToString()));
                if (!File.Exists(Path.Combine(folderPath.FullName, targetFolderName + ".zip")))
                {
                    DataCompressor.Compression(setting.SourcePath, Path.Combine(folderPath.FullName, targetFolderName));
                }
            }
        }
Example #10
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();
 }
Example #11
0
        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()));
            }
        }
Example #12
0
        public void TestCompression1()
        {
            var samples1_1000 = Sample1.GenerateSamples(100000);
            //TestSample1Sanity(1000, samples1_1000);

            Stopwatch w = new Stopwatch();

            w.Start();
            EnumerationFinder <Sample1> finder = new EnumerationFinder <Sample1>(samples1_1000);

            finder.GenerateEnumeration(x => x.Category);
            finder.GenerateEnumeration(x => x.CategoryId);
            finder.GenerateEnumeration(x => x.Manager);

            var packedData = DataCompressor <Sample1> .Compress(samples1_1000, finder.Schema, finder.EnumerationList);

            w.Stop();
            var elapsedMillis = w.Elapsed.TotalMilliseconds;

            var originalJson   = JsonUtils.ConvertToJson(samples1_1000).ToCharArray().Length;
            var compressedJson = JsonUtils.ConvertToJson(packedData).ToCharArray().Length;

            Assert.IsNotNull(packedData);
        }
Example #13
0
        public string Unpack(byte[] payload)
        {
            DataCompressor compressor = new DataCompressor(_compressionStrategy);

            return(compressor.Decompress(payload));
        }
Example #14
0
 public TestorData GetTestSettings(int testId)
 {
     byte[] result = StaticServerProvider.TestEdit.GetTestSettings(testId);
     return DataCompressor.DecompressData<TestorData>(result);
 }
Example #15
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();
        }
Example #16
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();
                }
            }
        }
Example #17
0
        static void Main(string[] args)
        {
            bool result;

            Options.Options options = new Options.Options();
            Console.WriteLine(options.GetUsage());
            do
            {
                result = false;
                try
                {
                    // если запускаем .exe, а не из коммандной строки
                    if (args == null || args.Length == 0)
                    {
                        string program = Path.GetFileNameWithoutExtension(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName).Split('.')[0]; //получаем имя программы
                        Console.Write("\nВведите команду: ");
                        args = Regex.Split(Console.ReadLine(), @"\s+");
                        if (args[0].ToLower() == program.ToLower())
                        {
                            string[] arguments = new string[args.Length - 1];
                            Array.Copy(args, 1, arguments, 0, arguments.Length); // копируем аргументы командной строки
                            if (CommandLine.Parser.Default.ParseArguments(arguments, options))
                            {
                                OptionsModel model = new OptionsModel(options);
                                if (model.IsValid())
                                {
                                    if (model.CommandName == "compress")
                                    {
                                        DataCompressor compressor = new DataCompressor(model.InputPath, model.OutputPath);
                                        result = compressor.RunArchive();
                                    }
                                    else
                                    {
                                        DataDecompressor decompressor = new DataDecompressor(model.InputPath, model.OutputPath);
                                        result = decompressor.RunUnarchive();
                                    }
                                }
                                else
                                {
                                    Console.WriteLine("Входные параметры не действительны! Попробуйте ввести команду заново: ");
                                }
                            }
                        }
                    }
                    else
                    {
                        if (CommandLine.Parser.Default.ParseArguments(args, options))
                        {
                            OptionsModel model = new OptionsModel(options);
                            if (model.IsValid())
                            {
                                if (model.CommandName == "compress")
                                {
                                    DataCompressor compressor = new DataCompressor(model.InputPath, model.OutputPath);
                                    result = compressor.RunArchive();
                                }
                                else
                                {
                                    DataDecompressor decompressor = new DataDecompressor(model.InputPath, model.OutputPath);
                                    result = decompressor.RunUnarchive();
                                }
                            }
                            else
                            {
                                Console.WriteLine("Входные параметры не действительны! Попробуйте ввести команду заново: ");
                            }
                        }
                    }
                }
                catch (ArgumentException)
                {
                    Console.WriteLine("Один или несколько входных параметров не действительны: ");
                }
                finally
                {
                    if (result == true)
                    {
                        Console.WriteLine("Операция успешно выполнена!");
                    }
                    else
                    {
                        Console.WriteLine("Операция не выполнена");
                    }
                    options = new Options.Options();
                    args    = null;
                    Console.WriteLine("Нажмите 'Esc' для выхода или любую клавишу для продолжения... : ");
                }
            }while (Console.ReadKey().KeyChar != 0x1B); // пока не нажали кнопку "esc";
        }
Example #18
0
        public byte[] GetQuestion(int questId, bool getBLOBs)
        {
            Debug.Assert(questId > 0);

            return(DataCompressor.CompressData <TestorData>(GetQuestion(questId, false, false, getBLOBs)));
        }
Example #19
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());
            }
        }
Example #20
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);
                }
            }
        }