public void ExapostilarionRuleTest_FromRealDB()
        {
            var dbContext = TypiconDbContextFactory.Create();

            var typiconEntity = dbContext.Set <TypiconVersion>().First(c => c.Id == 1);

            ServiceSequenceHandler handler = new ServiceSequenceHandler();

            string xml = TestDataXmlReader.GetXmlString("ExapostilarionRuleTest.xml");

            DateTime date = new DateTime(2017, 11, 09);

            MenologyRule rule = typiconEntity.GetMenologyRule(date);

            rule.RuleDefinition = xml;

            handler.Settings.Menologies = rule.DayWorships.ToList();
            handler.Settings.Date       = date;

            OktoikhDay oktoikhDay = DataQueryProcessorFactory.Instance.Process(new OktoikhDayQuery(date));

            handler.Settings.OktoikhDay = oktoikhDay;

            var ruleContainer = TestRuleSerializer.Deserialize <ExapostilarionRule>(xml);

            ruleContainer.Interpret(handler);

            Assert.AreEqual(3, ruleContainer.Structure.Ymnis.Count);
            Assert.IsNotNull(ruleContainer.Structure.Theotokion);
        }
Пример #2
0
        public async Task <Result> ExecuteAsync(CreateOktoikhDayCommand command)
        {
            var obj = new OktoikhDay()
            {
                Ihos       = command.Ihos,
                DayOfWeek  = command.DayOfWeek,
                Definition = command.Definition
            };

            DbContext.Set <OktoikhDay>().Add(obj);

            await DbContext.SaveChangesAsync();

            return(Result.Ok());
        }
Пример #3
0
        public void KanonasRule_FromDB()
        {
            EFUnitOfWork _unitOfWork = new EFUnitOfWork();
            //BookStorage.Instance = BookStorageFactory.Create();
            GetTypiconEntityResponse resp          = new TypiconEntityService(_unitOfWork).GetTypiconEntity(1);
            TypiconEntity            typiconEntity = resp.TypiconEntity;

            ServiceSequenceHandler handler = new ServiceSequenceHandler()
            {
                Settings = new RuleHandlerSettings()
                {
                    Language = LanguageSettingsFactory.Create("cs-ru")
                }
            };

            string     folderPath = Path.Combine(TestContext.CurrentContext.TestDirectory, @"TestData");
            FileReader reader     = new FileReader(folderPath);
            string     xml        = reader.Read("KanonasRuleTest.xml");

            DateTime date = new DateTime(2017, 11, 11);

            MenologyRule rule = typiconEntity.GetMenologyRule(date);

            rule.RuleDefinition = xml;

            handler.Settings.Rule        = rule;
            handler.Settings.DayWorships = rule.DayWorships;
            handler.Settings.Date        = date;

            var bookStorage = BookStorageFactory.Create();

            OktoikhDay oktoikhDay = bookStorage.Oktoikh.Get(date);

            handler.Settings.OktoikhDay = oktoikhDay;

            //rule.GetRule(TestRuleSerializer.Root).Interpret(handler);

            handler.ClearResult();
            KanonasRule kanonasRule = rule.GetRule <KanonasRule>(TestRuleSerializer.Root);

            kanonasRule.Interpret(handler);

            Assert.AreEqual(4, kanonasRule.Kanones.Count());
            //Assert.IsNotNull(kanonasRule.Sedalen);
        }
        public void YmnosStructureRule_FromRealDB()
        {
            EFUnitOfWork _unitOfWork = new EFUnitOfWork();
            //BookStorage.Instance = BookStorageFactory.Create();
            GetTypiconEntityResponse resp          = new TypiconEntityService(_unitOfWork).GetTypiconEntity(1);
            TypiconEntity            typiconEntity = resp.TypiconEntity;

            ServiceSequenceHandler handler = new ServiceSequenceHandler()
            {
                Settings = new RuleHandlerSettings()
                {
                    Language = LanguageSettingsFactory.Create("cs-ru")
                }
            };

            string     folderPath = Path.Combine(TestContext.CurrentContext.TestDirectory, @"TestData");
            FileReader reader     = new FileReader(folderPath);
            string     xml        = reader.Read("YmnosStructureRuleTest.xml");

            //Дата --11-09 exists - true
            DateTime date = new DateTime(2017, 11, 09);

            MenologyRule rule = typiconEntity.GetMenologyRule(date);

            rule.RuleDefinition = xml;

            handler.Settings.Rule        = rule;
            handler.Settings.DayWorships = rule.DayWorships;
            handler.Settings.Date        = date;

            var bookStorage = BookStorageFactory.Create();

            OktoikhDay oktoikhDay = bookStorage.Oktoikh.Get(date);

            handler.Settings.OktoikhDay = oktoikhDay;

            rule.GetRule(TestRuleSerializer.Root).Interpret(handler);

            var model = handler.GetResult();

            //SedalenRuleViewModel model = rule.GetRule<SedalenRule>(TestRuleSerializer.Root).CreateViewModel(handler) as SedalenRuleViewModel;

            Assert.AreEqual(3, rule.GetRule <SedalenRule>(TestRuleSerializer.Root).Structure.YmnosStructureCount);
            Assert.Pass(rule.GetRule <SedalenRule>(TestRuleSerializer.Root).Structure.YmnosStructureCount.ToString());
        }
 private RuleHandlerSettings InnerCreate(TypiconRule rule, IEnumerable <DayWorship> dayWorships, OktoikhDay oktoikhDay,
                                         GetRuleSettingsRequest req, RuleHandlerSettings additionalSettings, int?signNumber = null)
 {
     return(new RuleHandlerSettings()
     {
         Addition = additionalSettings,
         Date = req.Date,
         Rule = rule,
         DayWorships = dayWorships.ToList(),
         OktoikhDay = oktoikhDay,
         Language = LanguageSettingsFactory.Create(req.Language),
         SignNumber = signNumber,
         //ThrowExceptionIfInvalid = req.ThrowExceptionIfInvalid,
         ApplyParameters = req.ApplyParameters,
         CheckParameters = req.CheckParameters
     });
 }
        private RuleHandlerSettings GetRecursiveSettings(TypiconRule rule, IEnumerable <DayWorship> dayWorships, OktoikhDay oktoikhDay,
                                                         GetRuleSettingsRequest req, RuleHandlerSettings additionalSettings, int?signNumber = null)
        {
            RuleHandlerSettings outputSettings = InnerCreate(rule, dayWorships, oktoikhDay, req, additionalSettings, signNumber);

            /*
             * Если Правило имеет:
             *      Правило помечено как Дополнение
             *      и определен Шаблон
             */

            if (/*string.IsNullOrEmpty(rule.RuleDefinition) && */ rule.IsAddition && rule.Template != null)
            {
                //если правило определено и определено как добавление, входим в рекурсию
                outputSettings = GetRecursiveSettings(rule.Template, dayWorships, oktoikhDay, req, outputSettings);
            }

            return(outputSettings);
        }