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); } }
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); } }
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); } } } } }
protected override void InnerInterpret(IRuleHandler handler) { if (handler.IsTypeAuthorized(this) && !this.AsAdditionHandled(handler)) { base.InnerInterpret(handler); handler.Execute(this); } }
//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); } } } }
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); } }
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; } }
protected override bool IsAuthorized(IRuleHandler handler) => handler.IsTypeAuthorized(this as YmnosStructureRule);
protected override bool IsAuthorized(IRuleHandler handler) => handler.IsTypeAuthorized(this);