//public GetSequenceResponse GetSequence(GetSequenceRequest request)
        //{
        //    //TODO: добавить нормальную тестовую строку
        //    string html = @"<!DOCTYPE html>
        //                    <html>
        //                        <head>
        //                            <meta charset=""utf-8"" />
        //                        </head>
        //                        <body>
        //                            <div id=""schberlukiru"">
        //                                <div class=""schedule""><h4 class=""subtitle"">СЕДМИЦА 20-АЯ ПО ПЯТИДЕСЯТНИЦЕ</h4><div style=""margin - top:10px; "">[sign cat=""2""]<strong>16 октября 2017 г.<br/>ПОНЕДЕЛЬНИК<br/>Сщмч. Диони́сия Ареопаги́та, еп. Афи́нского.</strong></div><table border=0><tr><td>06.00&nbsp;</td><td>Полунощница. Утреня. Часы.</td></tr><tr><td>08.00&nbsp;</td><td>Божественная литургия.</td></tr><tr><td>17.30&nbsp;</td><td>9-й час. Вечерня. Малое повечерие.</td></tr></table><div style=""margin - top:10px; "">[sign cat=""3""]<strong>17 октября 2017 г.<br/>ВТОРНИК<br/>Обре́тение мощей свтт. Гу́рия, архиеп. Казанского, и Варсоно́фия, еп. Тверского.</strong></div><table border=0><tr><td>06.00&nbsp;</td><td>Полунощница. Утреня. Часы.</td></tr><tr><td>08.00&nbsp;</td><td>Божественная литургия.</td></tr><tr><td>17.30&nbsp;</td><td>9-й час. Вечерня. Малое повечерие.</td></tr></table><div style=""margin - top:10px; "">[sign cat=""3""]<strong>18 октября 2017 г.<br/>СРЕДА<br/>Свтт. Петра, Алекси́я, Ионы, Макария, Филиппа, Иова, Ермогена, Тихона, Петра, Филарета, Иннокентия и Макария, Московских и всея России чудотворцев.</strong></div><table border=0><tr><td>06.00&nbsp;</td><td>Полунощница. Утреня. Часы.</td></tr><tr><td>08.00&nbsp;</td><td>Божественная литургия.</td></tr><tr><td>17.30&nbsp;</td><td>9-й час. Вечерня. Малое повечерие.</td></tr></table><div style=""margin - top:10px; "">[sign cat=""3""]<strong>19 октября 2017 г.<br/>ЧЕТВЕРГ<br/>Апостола Фомы́.</strong></div><table border=0><tr><td>06.00&nbsp;</td><td>Полунощница. Утреня. Часы.</td></tr><tr><td>08.00&nbsp;</td><td>Божественная литургия.</td></tr><tr><td>17.30&nbsp;</td><td>9-й час.  Вечерня. Малое повечерие.</td></tr></table><div style=""margin - top:10px; "">[sign cat=""2""]<strong>20 октября 2017 г.<br/>ПЯТНИЦА<br/>Мчч. Се́ргия и Ва́кха.</strong></div><table border=0><tr><td>06.00&nbsp;</td><td>Полунощница. Утреня. Часы.</td></tr><tr><td>08.00&nbsp;</td><td>Божественная литургия.</td></tr><tr><td>17.30&nbsp;</td><td>9-й час.  Вечерня. Малое повечерие.</td></tr></table><div style=""margin - top:10px; "">[sign cat=""1""]<strong>21 октября 2017 г.<br/>СУББОТА<br/>Прп. Пелагии.</strong></div><table border=0><tr><td>06.00&nbsp;</td><td>Полунощница. Утреня. Часы.</td></tr><tr><td>08.00&nbsp;</td><td>Божественная литургия.</td></tr><tr><td>16.00&nbsp;</td><td>Всенощное бдение.</td></tr></table><div style=""margin - top:10px; "">[sign cat=""9""]<strong><span style=""color: #ff0000;"">22 октября 2017 г.<br/>ВОСКРЕСЕНЬЕ<br/>Неделя 20-ая по Пятидесятнице. Глас 3-й. Ап. Иа́кова Алфе́ева.</strong></span></div><table border=0><tr><td>08.40&nbsp;</td><td>Часы 3-й и 6-й.</td></tr><tr><td>09.00&nbsp;</td><td>Божественная литургия.</td></tr><tr><td>17.30&nbsp;</td><td>9-й час. Вечерня. Малое повечерие.</td></tr></table></div><div class=""schedule""><h4 class=""subtitle"">СЕДМИЦА 21-АЯ ПО ПЯТИДЕСЯТНИЦЕ</h4><div style=""margin - top:10px; "">[sign cat=""3""]<strong>23 октября 2017 г.<br/>ПОНЕДЕЛЬНИК<br/>Прп. Амвро́сия О́птинского.</strong></div><table border=0><tr><td>06.00&nbsp;</td><td>Полунощница. Утреня. Часы.</td></tr><tr><td>08.00&nbsp;</td><td>Божественная литургия.</td></tr><tr><td>17.30&nbsp;</td><td>9-й час. Вечерня. Малое повечерие.</td></tr></table><div style=""margin - top:10px; "">[sign cat=""3""]<strong>24 октября 2017 г.<br/>ВТОРНИК<br/>Собор преподобных О́птинских старцев.</strong></div><table border=0><tr><td>06.00&nbsp;</td><td>Полунощница. Утреня. Часы.</td></tr><tr><td>08.00&nbsp;</td><td>Божественная литургия.</td></tr><tr><td>17.30&nbsp;</td><td>9-й час.  Вечерня. Малое повечерие.</td></tr></table><div style=""margin - top:10px; "">[sign cat=""1""]<strong>25 октября 2017 г.<br/>СРЕДА<br/>Мчч. Про́ва, Тара́ха и Андрони́ка. Прп. Космы́, еп. Маиу́мского, творца канонов. </strong></div><table border=0><tr><td>06.00&nbsp;</td><td>Полунощница. Утреня. Часы.</td></tr><tr><td>08.00&nbsp;</td><td>Божественная литургия.</td></tr><tr><td>17.30&nbsp;</td><td>9-й час. Вечерня. Малое повечерие.</td></tr></table><div style=""margin - top:10px; "">[sign cat=""3""]<strong>26 октября 2017 г.<br/>ЧЕТВЕРГ<br/>Иверской иконы Божией Матери.</strong></div><table border=0><tr><td>06.00&nbsp;</td><td>Полунощница. Утреня. Часы.</td></tr><tr><td>08.00&nbsp;</td><td>Божественная литургия.</td></tr><tr><td>17.30&nbsp;</td><td>9-й час. Вечерня. Малое повечерие.</td></tr></table><div style=""margin - top:10px; "">[sign cat=""3""]<strong>27 октября 2017 г.<br/>ПЯТНИЦА<br/>Прп. Нико́лы Свято́ши, кн. Черни́говского.</strong></div><table border=0><tr><td>06.00&nbsp;</td><td>Полунощница. Утреня. Часы.</td></tr><tr><td>08.00&nbsp;</td><td>Божественная литургия.</td></tr><tr><td>17.30&nbsp;</td><td>9-й час. Вечерня. Малое повечерие.</td></tr></table><div style=""margin - top:10px; "">[sign cat=""3""]<strong>28 октября 2017 г.<br/>СУББОТА<br/>Свт. Афана́сия исп., еп. Ковро́вского.</strong></div><table border=0><tr><td>06.00&nbsp;</td><td>Полунощница. Утреня. Часы.</td></tr><tr><td>08.00&nbsp;</td><td>Божественная литургия.</td></tr><tr><td>16.00&nbsp;</td><td>Всенощное бдение.</td></tr></table><div style=""margin - top:10px; "">[sign cat=""9""]<strong><span style=""color: #ff0000;"">29 октября 2017 г.<br/>ВОСКРЕСЕНЬЕ<br/>Неделя 21-ая по Пятидесятнице. Глас 4-й. Мч. Ло́нгина со́тника, иже при Кресте́ Госпо́дни.</strong></span></div><table border=0><tr><td>08.40&nbsp;</td><td>Часы 3-й и 6-й.</td></tr><tr><td>09.00&nbsp;</td><td>Божественная литургия.</td></tr><tr><td>17.30&nbsp;</td><td>9-й час.  Вечерня. Малое повечерие.</td></tr></table></div>
        //                            </div>
        //                        </body>
        //                    </html>";

        //    GetSequenceResponse response = new GetSequenceResponse() { Sequence = html };

        //    return response;
        //}

        public GetSequenceResponse GetSequence(GetSequenceRequest request)
        {
            TypiconEntityService typService = new TypiconEntityService(_unitOfWork);

            GetTypiconEntityResponse resp = typService.GetTypiconEntity(request.TypiconId);

            TypiconEntity typicon = resp.TypiconEntity ?? throw new NullReferenceException("TypiconEntity");


            GetScheduleWeekResponse weekResponse = CreateScheduleService().GetScheduleWeek(new GetScheduleWeekRequest()
            {
                Date            = request.Date,
                Typicon         = typicon,
                Handler         = new ScheduleHandler(),
                Language        = "cs-ru",
                CheckParameters = new CustomParamsCollection <IRuleCheckParameter>().SetModeParam(HandlingMode.AstronomicDay)
            });


            _unitOfWork.SaveChanges();

            HtmlInnerScheduleWeekViewer viewer = new HtmlInnerScheduleWeekViewer();

            viewer.Execute(weekResponse.Week);

            GetSequenceResponse response = new GetSequenceResponse()
            {
                Sequence = viewer.ResultString
            };

            return(response);
        }
Example #2
0
        public void BerlukiRu_ComparingRequests()
        {
            EFUnitOfWork _unitOfWork = new EFUnitOfWork();

            //BookStorage.Instance = BookStorageFactory.Create();

            TypiconEntity typiconEntity = _unitOfWork.Repository <TypiconEntity>().Get(c => c.Name == "Типикон");

            DateTime date = new DateTime(2017, 9, 24);

            //сначала как в запросе в контроллере BerlukiRuController
            GetScheduleDayRequest dayRequest1 = new GetScheduleDayRequest()
            {
                Date            = date,
                Handler         = new ScheduleHandler(),
                Typicon         = typiconEntity,
                CheckParameters = new CustomParamsCollection <IRuleCheckParameter>().SetModeParam(HandlingMode.AstronomicDay)
            };

            ScheduleService scheduleService = ScheduleServiceFactory.Create();

            GetScheduleDayResponse dayResponse1 = scheduleService.GetScheduleDay(dayRequest1);

            //теперь как TypiconController
            GetScheduleDayRequest dayRequest2 = new GetScheduleDayRequest()
            {
                Date            = date,
                Typicon         = typiconEntity,
                Handler         = new ScheduleHandler(),
                CheckParameters = new CustomParamsCollection <IRuleCheckParameter>().SetModeParam(HandlingMode.AstronomicDay)
            };

            GetScheduleDayResponse dayResponse2 = scheduleService.GetScheduleDay(dayRequest2);

            GetScheduleWeekRequest weekRequest = new GetScheduleWeekRequest()
            {
                Date            = date,
                Typicon         = typiconEntity,
                Handler         = new ScheduleHandler(),
                CheckParameters = new CustomParamsCollection <IRuleCheckParameter>().SetModeParam(HandlingMode.AstronomicDay)
            };

            GetScheduleWeekResponse weekResponse = scheduleService.GetScheduleWeek(weekRequest);

            Assert.AreEqual(dayResponse1.Day.Name, dayResponse2.Day.Name);
            Assert.AreEqual(dayResponse1.Day.Name, weekResponse.Week.Days.Last().Name);
        }
Example #3
0
        public void BerlukiRu_Test()
        {
            EFUnitOfWork _unitOfWork = new EFUnitOfWork();

            //BookStorage.Instance = BookStorageFactory.Create();

            TypiconEntity typiconEntity = _unitOfWork.Repository <TypiconEntity>().Get(c => c.Name == "Типикон");

            DateTime date = new DateTime(2017, 09, 03);//DateTime.Now;

            if ((date.DayOfWeek == DayOfWeek.Sunday) && (date.Hour > 17))
            {
                date = date.AddDays(1);
            }

            GetScheduleWeekRequest weekRequest = new GetScheduleWeekRequest()
            {
                Date            = date,
                Typicon         = typiconEntity,
                Handler         = new ScheduleHandler(),
                CheckParameters = new CustomParamsCollection <IRuleCheckParameter>().SetModeParam(HandlingMode.AstronomicDay)
            };

            ScheduleService scheduleService = ScheduleServiceFactory.Create();

            GetScheduleWeekResponse weekResponse = scheduleService.GetScheduleWeek(weekRequest);

            HtmlScheduleWeekViewer htmlViewer = new HtmlScheduleWeekViewer();

            htmlViewer.Execute(weekResponse.Week);

            string resultString = htmlViewer.ResultString;

            weekRequest.Date = date.AddDays(7);

            weekResponse = scheduleService.GetScheduleWeek(weekRequest);
            htmlViewer.Execute(weekResponse.Week);
            resultString += htmlViewer.ResultString;

            Assert.Pass(resultString);
        }
Example #4
0
        private void Execute()
        {
            if (textBoxFilePath.Text == "")
            {
                MessageBox.Show("Задайте путь к папке для сохранения файлов.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            //try
            //{
            GetScheduleWeekRequest weekRequest = new GetScheduleWeekRequest()
            {
                Date     = SelectedDate,
                Typicon  = _typiconEntity,
                Handler  = new ScheduleHandler(),
                Language = "cs-ru",
                ThrowExceptionIfInvalid = checkBoxException.Checked,
                ApplyParameters         = CustomParameters,
                CheckParameters         = new CustomParamsCollection <IRuleCheckParameter>().SetModeParam(HandlingMode.AstronomicDay)
            };

            GetScheduleWeekResponse weekResponse = _scheduleService.GetScheduleWeek(weekRequest);

            _unitOfWork.SaveChanges();

            //string messageString = "";

            if (checkBoxDocx.Checked)
            {
                HandleTemplateRequest request = new HandleTemplateRequest()
                {
                    FileTemplateName      = Properties.Settings.Default.TemplateFilePath,
                    OutputFolderPath      = Properties.Settings.Default.OutputDirectoryPath,
                    ScheduleFileStart     = Properties.Settings.Default.ScheduleFileStart,
                    ScheduleWeek          = weekResponse.Week,
                    OpenFileAfterHandling = checkBoxIsDocxOpen.Checked,
                };

                var response = _docxTemplateService.Operate(request);

                if (response.Exception != null)
                {
                    MessageBox.Show(response.Exception.ToString(), "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                //if (textBoxTemplatePath.Text == "")
                //{
                //    MessageBox.Show("Определите файл docx шаблона.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                //    return;
                //}

                //string fileTemplateName = textBoxTemplatePath.Text;
                //string fileOutputName = GetFileName(_selectedDate) + ".docx";

                //if (File.Exists(fileOutputName))
                //    File.Delete(fileOutputName);
                //string dirPath = Path.GetDirectoryName(fileOutputName);
                //if (!Directory.Exists(dirPath))
                //    Directory.CreateDirectory(dirPath);
                //File.Copy(fileTemplateName, fileOutputName);

                //DocxScheduleWeekViewer docxViewer = new DocxScheduleWeekViewer(fileOutputName);

                //docxViewer.Execute(weekResponse.Week);

                //messageString += "\nПечатная версия была успешно сохранена. ";

                FillDateCaptions();

                //if (checkBoxIsDocxOpen.Checked)
                //{
                //    System.Diagnostics.Process proc = new System.Diagnostics.Process();
                //    proc.StartInfo.FileName = fileOutputName;
                //    proc.StartInfo.UseShellExecute = true;
                //    proc.Start();
                //}
            }

            if (checkBoxBigDocx.Checked)
            {
                HandleTemplateRequest request = new HandleTemplateRequest()
                {
                    FileTemplateName      = Properties.Settings.Default.BigTemplateFilePath,
                    OutputFolderPath      = Properties.Settings.Default.OutputDirectoryPath,
                    ScheduleFileStart     = Properties.Settings.Default.BigScheduleFileStart,
                    DaysPerTable          = 4,
                    ScheduleWeek          = weekResponse.Week,
                    OpenFileAfterHandling = checkBoxIsBigDocxOpen.Checked,
                };

                var response = _docxTemplateService.Operate(request);

                if (response.Exception != null)
                {
                    MessageBox.Show(response.Exception.ToString(), "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                //if (textBoxTemplatePath.Text == "")
                //{
                //    MessageBox.Show("Определите файл docx шаблона.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                //    return;
                //}

                //string fileTemplateName = textBoxTemplatePath.Text;
                //string fileOutputName = GetFileName(_selectedDate) + ".docx";

                //if (File.Exists(fileOutputName))
                //    File.Delete(fileOutputName);
                //string dirPath = Path.GetDirectoryName(fileOutputName);
                //if (!Directory.Exists(dirPath))
                //    Directory.CreateDirectory(dirPath);
                //File.Copy(fileTemplateName, fileOutputName);

                //DocxScheduleWeekViewer docxViewer = new DocxScheduleWeekViewer(fileOutputName);

                //docxViewer.Execute(weekResponse.Week);

                //messageString += "\nПечатная версия была успешно сохранена. ";

                FillDateCaptions();

                //if (checkBoxIsDocxOpen.Checked)
                //{
                //    System.Diagnostics.Process proc = new System.Diagnostics.Process();
                //    proc.StartInfo.FileName = fileOutputName;
                //    proc.StartInfo.UseShellExecute = true;
                //    proc.Start();
                //}
            }

            if (checkBoxTxt.Checked)
            {
                HtmlScheduleWeekViewer htmlViewer = new HtmlScheduleWeekViewer();
                htmlViewer.Execute(weekResponse.Week);

                //textBoxResult.Clear();
                //textBoxResult.AppendText(htmlViewer.ResultString);

                if (checkBoxWordpress.Checked)
                {
                    using (FormPassword testDialog = new FormPassword())
                    {
                        // Show testDialog as a modal dialog and determine if DialogResult = OK.
                        if (testDialog.ShowDialog(this) == DialogResult.OK)
                        {
                            if (testDialog.textBoxPassword.Text == Properties.Settings.Default.PasswordToPostWordpress)
                            {
                                DateTime datePub = _selectedDate.AddDays(-8).AddHours(17).AddMinutes(30);

                                PostToWordPress(weekResponse.Week.Name, htmlViewer.ResultString, datePub);

                                MessageBox.Show($"Запись размещена на сайте. Дата публикации - {datePub.ToString("hh:mm dd MMMM yyyy года.")}", "Информация",
                                                MessageBoxButtons.OK, MessageBoxIcon.Information);
                            }
                            else
                            {
                                // Read the contents of testDialog's TextBox.
                                MessageBox.Show("Неверный пароль. Расписание не было опубликовано на сайте.", "Ошибка",
                                                MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                            }
                        }
                    }
                }
            }

            //MessageBox.Show(messageString, "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information);

            #region to TextBox

            textBoxResult.Clear();

            textBoxResult.AppendText(weekResponse.Week.Name + Environment.NewLine);

            foreach (ScheduleDay day in weekResponse.Week.Days)
            {
                textBoxResult.AppendText("--------------------------" + Environment.NewLine);
                textBoxResult.AppendText(day.Date.ToShortDateString() + Environment.NewLine);
                textBoxResult.AppendText(day.Name + Environment.NewLine);
                textBoxResult.AppendText("Знак службы: " + day.SignName + Environment.NewLine);
                foreach (WorshipRuleViewModel el in day.Schedule)
                {
                    string str = !string.IsNullOrEmpty(el.Time) ? $"{el.Time} " : "";

                    str += $"{el.Name} {el.AdditionalName + Environment.NewLine}";

                    textBoxResult.AppendText(str);
                }
            }

            #endregion
            //}
            //catch (Exception ex)
            //{
            //    MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
            //}
        }