public void BuildKAndBDistributionsChart(DoubleNumericDistribution distribution)
        {
            _temp.Write("");
            for (var i = 1; i < 11; i++)
            {
                _temp.Write(i);
            }
            _temp.WriteLine();

            _temp.SetPos1();

            for (var i = 1; i < 11; i++)
            {
                _temp.Write(i);
                for (var j = (i - 1) * 10; j < (i - 1) * 10 + 10; j++)
                {
                    _temp.Write(distribution.Parts.ElementAt(j).NumericsAmount);
                }
                _temp.WriteLine();
            }

            _temp.GoBack();
            _temp.SetPos2();

            _temp.Create3DChart("KnBDistribution", "Распределение по K и B",
                                _main, new[] { "K", "Количество человек", "B" });

            _temp.WriteLine();
        }
        public void BuildSigmaMaxDistributionChart(DoubleNumericDistribution distribution)
        {
            _temp.Write("");
            for (var i = 1; i < 11; i++)
            {
                _temp.Write(i);
            }
            _temp.WriteLine();

            _temp.SetPos1();

            for (var i = 1; i < 11; i++)
            {
                _temp.Write(i);
                for (var j = (i - 1) * 10; j < (i - 1) * 10 + 10; j++)
                {
                    _temp.Write(distribution.Parts.ElementAt(j).SigmaMax);
                }
                _temp.WriteLine();
            }

            _temp.GoBack();
            _temp.SetPos2();

            _temp.Create3DChart("SigmaMaxDistribution", "Распределение по K и B SigmaMax",
                                _main, new[] { "K", "SigmaMax", "B" });

            _temp.WriteLine();
        }
        public void ToStream(Stream stream, DataAnalyserReport report)
        {
            _main.Write("Всего тестов:");
            _main.WriteLine(report.TotalAmountOfTests);

            _main.Write("Количество уникальных e-mail'ов:");
            _main.WriteLine(report.AmountOfUniqueEmails);

            BuildAttemptDistributionChart(report.AttemptDistribution);
            BuildResultDistributionChart(report.ResultDistribution);

            (var kDistr, var bDistr) = report.GetAdditionalInfo();

            if (kDistr != null && bDistr != null)
            {
                BuildNumericDistributionChart(kDistr, "KDistribution", "Распределение коэффициента K");
                BuildNumericDistributionChart(bDistr, "BDistribution", "Распределение коэффициента B");

                var distr = new DoubleNumericDistribution(kDistr.LeftBorder, kDistr.RightBorder,
                                                          bDistr.LeftBorder, bDistr.RightBorder, 10);

                foreach (var el in report.PersonStatistics)
                {
                    if (el.Value.AdditionalInfo != null)
                    {
                        distr.AddNumerics(el.Value.AdditionalInfo.Value.K,
                                          el.Value.AdditionalInfo.Value.B,
                                          el.Value.AdditionalInfo.Value.R);
                    }
                }

                BuildKAndBDistributionsChart(distr);
                BuildSigmaMinDistributionChart(distr);
                BuildSigmaMaxDistributionChart(distr);
            }

            foreach (var el in report.QuestionStatistics)
            {
                BuildQuestionStatistics(el);
            }

            _package.SaveAs(stream);
        }