예제 #1
0
        //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);
        }
예제 #2
0
        private void InitializeIoC()
        {
            var container = new RegisterByContainer().Container;

            var unitOfWork = container.GetInstance <IUnitOfWork>();

            var typiconEntityService = container.With(unitOfWork).GetInstance <ITypiconEntityService>();

            GetTypiconEntityResponse response = typiconEntityService.GetTypiconEntity(1);// _unitOfWork.Repository<TypiconEntity>().Get(c => c.Name == "Типикон");

            typiconEntity = response.TypiconEntity;

            var bookStorage = new BookStorage(
                container.With(unitOfWork).GetInstance <IEvangelionContext>(),
                container.With(unitOfWork).GetInstance <IApostolContext>(),
                container.With(unitOfWork).GetInstance <IOldTestamentContext>(),
                container.With(unitOfWork).GetInstance <IPsalterContext>(),
                container.With(unitOfWork).GetInstance <IOktoikhContext>(),
                container.With(unitOfWork).GetInstance <ITheotokionAppContext>(),
                container.With(unitOfWork).GetInstance <IEasterContext>(),
                container.With(unitOfWork).GetInstance <IKatavasiaContext>());

            IRuleSerializerRoot serializerRoot = container.With(bookStorage).GetInstance <IRuleSerializerRoot>();

            settingsFactory = new CustomRuleSettingsFactory();

            scheduleService = container.With(settingsFactory).With(serializerRoot).GetInstance <IScheduleService>();
        }
예제 #3
0
        private void InitializeIoC()
        {
            var container = new RegisterByContainer().Container;

            _unitOfWork = container.GetInstance <IUnitOfWork>();

            _typiconEntityService = container.With(_unitOfWork).GetInstance <ITypiconEntityService>();

            GetTypiconEntityResponse response = _typiconEntityService.GetTypiconEntity(1);// _unitOfWork.Repository<TypiconEntity>().Get(c => c.Name == "Типикон");

            _typiconEntity = response.TypiconEntity;

            _bookStorage = new BookStorage(
                container.With(_unitOfWork).GetInstance <IEvangelionContext>(),
                container.With(_unitOfWork).GetInstance <IApostolContext>(),
                container.With(_unitOfWork).GetInstance <IOldTestamentContext>(),
                container.With(_unitOfWork).GetInstance <IPsalterContext>(),
                container.With(_unitOfWork).GetInstance <IOktoikhContext>(),
                container.With(_unitOfWork).GetInstance <ITheotokionAppContext>(),
                container.With(_unitOfWork).GetInstance <IEasterContext>(),
                container.With(_unitOfWork).GetInstance <IKatavasiaContext>());

            //EasterStorage.Instance.EasterDays = _unitOfWork.Repository<EasterItem>().GetAll().ToList();

            IRuleSerializerRoot serializerRoot = container.With(_bookStorage).GetInstance <IRuleSerializerRoot>();
            var settingsFactory = container.GetInstance <IRuleHandlerSettingsFactory>();

            _scheduleService = container.With(settingsFactory).With(serializerRoot).GetInstance <IScheduleService>();

            _docxTemplateService = container.With(_bookStorage.Oktoikh).GetInstance <IDocxTemplateService>();
        }
        public void TypiconEntityService_GetTypiconEntity()
        {
            EFUnitOfWork _unitOfWork = new EFUnitOfWork();

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

            TypiconEntityService service = new TypiconEntityService(_unitOfWork);

            GetTypiconEntityResponse response = service.GetTypiconEntity(1);

            Assert.NotNull(response.TypiconEntity);
        }
        public void TypiconEntityService_ClearModifiedYears()
        {
            EFUnitOfWork _unitOfWork = new EFUnitOfWork();

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

            TypiconEntityService service = new TypiconEntityService(_unitOfWork);

            GetTypiconEntityResponse response = service.GetTypiconEntity(1);

            service.ClearModifiedYears(1);

            Assert.AreEqual(response.TypiconEntity.ModifiedYears.Count, 0);
        }
예제 #6
0
        public void ReloadRules(int id, string folderPath)
        {
            GetTypiconEntityResponse response = GetTypiconEntity(id);

            if (response.TypiconEntity != null)
            {
                string setting = Path.Combine(folderPath, response.TypiconEntity.Name, "Menology");

                FileReader fileReader = new FileReader(setting);

                foreach (MenologyRule rule in response.TypiconEntity.MenologyRules)
                {
                    if (rule.Date.IsEmpty && rule.DateB.IsEmpty)
                    {
                        rule.RuleDefinition = fileReader.Read(rule.Name);
                    }
                    else
                    {
                        rule.RuleDefinition = fileReader.Read(rule.DateB.Expression);
                    }
                }

                setting = Path.Combine(folderPath, response.TypiconEntity.Name, "Triodion");

                fileReader.FolderPath = setting;

                foreach (TriodionRule rule in response.TypiconEntity.TriodionRules)
                {
                    rule.RuleDefinition = fileReader.Read(rule.DaysFromEaster.ToString());
                }

                setting = Path.Combine(folderPath, response.TypiconEntity.Name, "Sign");

                fileReader.FolderPath = setting;

                foreach (Sign sign in response.TypiconEntity.Signs)
                {
                    sign.RuleDefinition = fileReader.Read(sign.Name);
                }

                //commonRules

                ReloadCommonRules(response.TypiconEntity, folderPath);

                _unitOfWork.SaveChanges();
            }
        }
예제 #7
0
        /// <summary>
        /// Удаляет все переходящие праздники у Устава с заданным Id
        /// </summary>
        /// <param name="id">Id Устава</param>
        public void ClearModifiedYears(int id)
        {
            GetTypiconEntityResponse response = GetTypiconEntity(id);

            if (response.TypiconEntity != null)
            {
                while (response.TypiconEntity.ModifiedYears.Count > 0)
                {
                    response.TypiconEntity.ModifiedYears.Remove(response.TypiconEntity.ModifiedYears[0]);
                }

                //response.TypiconEntity.ModifiedYears
                //    .ForEach(c =>
                //    {
                //        //c.ModifiedRules.ForEach(d =>
                //        //    {
                //        //        //d.RuleEntity = null;
                //        //        d.Parent = null;
                //        //    });
                //        //c.ModifiedRules.Clear();
                //        c.TypiconEntity = null;
                //    });
                //response.TypiconEntity.ModifiedYears.Clear();

                //while (response.TypiconEntity.ModifiedYears.Count > 0)
                //{
                //    ModifiedYear year = response.TypiconEntity.ModifiedYears[0];

                //    while (year.ModifiedRules.Count > 0)
                //    {
                //        _unitOfWork.Repository<ModifiedRule>().Delete(year.ModifiedRules[0]);
                //    }
                //    _unitOfWork.Repository<ModifiedYear>().Delete(year);
                //}

                _unitOfWork.SaveChanges();
            }
        }
예제 #8
0
        public GetTypiconEntityResponse GetTypiconEntity(int id)
        {
            var response = new GetTypiconEntityResponse();

            try
            {
                var typicon = _unitOfWork.Repository <TypiconEntity>().Get(x => x.Id == id);

                if (typicon == null)
                {
                    response.Exception = GetStandardTypiconNotFoundException();
                }
                else
                {
                    response.TypiconEntity = typicon;
                }
            }
            catch (Exception ex)
            {
                response.Exception = ex;
            }

            return(response);
        }