Example #1
0
        protected override void InnerInterpret(IRuleHandler handler)
        {
            if (handler.IsTypeAuthorized(this) && !this.AsAdditionHandled(handler))
            {
                //Добавляем IAsAdditionElement append реализацию
                //Приходится явно вызывать метод, т.к. функционал ExecContainer.InnerInterpret не используется
                var appended = AppendHandling(handler);

                Odes = GetChildElements <KOdiRule>(handler.Settings);

                AfterRules = GetChildElements <KAfterRule>(handler.Settings);

                foreach (var ode in Odes)
                {
                    ode.Interpret(handler);
                }

                //обрабатываем AfterRules только если это не расписание
                if (!(handler is ScheduleHandler))
                {
                    foreach (var afterRule in AfterRules)
                    {
                        afterRule.Interpret(handler);
                    }
                }

                //и сразу же удаляем appended IAsAdditionElements
                RemoveAppended(appended);

                handler.Execute(this);
            }
        }
Example #2
0
 protected override void InnerInterpret(IRuleHandler handler)
 {
     if (handler.IsTypeAuthorized(this))
     {
         handler.Execute(this);
     }
 }
 protected override void InnerInterpret(IRuleHandler handler)
 {
     if (handler.IsTypeAuthorized(this))
     {
         base.InnerInterpret(handler);
     }
 }
Example #4
0
        protected override void InnerInterpret(IRuleHandler handler)
        {
            if (handler.IsTypeAuthorized(this))
            {
                //находим переменную
                var query = SerializerRoot.QueryProcessor.Process(new TypiconVariableQuery(handler.Settings.TypiconVersionId, VariableName));

                //если найдена и у нее определено Значение
                if (query.Value is TypiconVariable var &&
                    !string.IsNullOrEmpty(var.Value))
                {
                    //десериализуем
                    var container = SerializerRoot.Container <ExecContainer>().Deserialize(var.Value);

                    if (container != null)
                    {
                        //находим все службы
                        foreach (var worship in container.GetChildElements <WorshipRule>(handler.Settings))
                        {
                            //обрабатываем их
                            handler.Execute(worship);
                        }
                    }
                }
            }
        }
Example #5
0
        protected override void InnerInterpret(IRuleHandler handler)
        {
            if (handler.IsTypeAuthorized(this) && !this.AsAdditionHandled(handler))
            {
                base.InnerInterpret(handler);

                handler.Execute(this);
            }
        }
Example #6
0
        //public ItemText Name { get; set; }

        //public List<TextHolder> CalculatedElements { get; private set; }

        protected override void InnerInterpret(IRuleHandler handler)
        {
            if (handler.IsTypeAuthorized(this))
            {
                base.InnerInterpret(handler);
                //используем специальный обработчик для Ektenis,
                //чтобы создать вычисленный список элементов TextHolder
                //ExecContainer container = GetChildElements<TextHolder>(date, handler);

                //CalculatedElements = container?.ChildElements.Cast<TextHolder>().ToList();

                handler.Execute(this);
            }
        }
        /// <summary>
        /// Заполняет дочерними элементами свойство ChildElements
        /// </summary>
        /// <param name="container">Правило, имеющее дочерние элементы</param>
        /// <param name="handler">обработчик</param>
        protected virtual void FillChildElements(IEnumerable <RuleElement> container, IRuleHandler handler)
        {
            foreach (RuleElement element in container)
            {
                if ((element is IViewModelElement v) &&
                    (element is ICustomInterpreted c) && handler.IsTypeAuthorized(c))
                {
                    var viewModel = v.CreateViewModel(handler);

                    if (viewModel != null)
                    {
                        AddRange(viewModel);
                    }
                }
            }
        }
Example #8
0
        protected override void InnerInterpret(IRuleHandler handler)
        {
            if (handler.IsTypeAuthorized(this) && !this.AsAdditionHandled(handler))
            {
                //используем специальный обработчик для KKatavasiaRule
                var katavasia = GetChildElements <KKatavasiaRule>(handler.Settings);

                //используем специальный обработчик для KanonasItem,
                //чтобы создать список источников канонов на обработку
                var kanones = GetChildElements <KKanonasItemRule>(handler.Settings);

                _kanonesCalc.Calculate(handler.Settings, kanones, katavasia, (Parent as KanonasRule).IsOrthros);

                handler.Execute(this);
            }
        }
Example #9
0
        protected override void InnerInterpret(IRuleHandler handler)
        {
            if (IsValid && handler.IsTypeAuthorized(this) && !this.AsAdditionHandled(handler))
            {
                InterpretChildDateExp(handler);

                handler.Execute(this);

                //обработка ModifyReplacedDay

                DateTime date = handler.Settings.Date;

                handler.Settings.Date = MoveDateCalculated;

                ModifyReplacedDay?.Interpret(handler);
                //возвращаем на всякий случай обратно дату
                handler.Settings.Date = date;
            }
        }
Example #10
0
 protected override bool IsAuthorized(IRuleHandler handler) => handler.IsTypeAuthorized(this as YmnosStructureRule);
 protected override bool IsAuthorized(IRuleHandler handler) => handler.IsTypeAuthorized(this);