protected Kanonas GetKanonas(RuleHandlerSettings settings) { Kanonas result = null; //разбираемся с source DayStructureBase dayWorship = null; switch (Source) { case KanonasSource.Item1: dayWorship = (settings.DayWorships.Count > 0) ? settings.DayWorships[0] : null; break; case KanonasSource.Item2: dayWorship = (settings.DayWorships.Count > 1) ? settings.DayWorships[1] : null; break; case KanonasSource.Item3: dayWorship = (settings.DayWorships.Count > 2) ? settings.DayWorships[2] : null; break; case KanonasSource.Oktoikh: dayWorship = settings.OktoikhDay; break; } if (dayWorship != null) { switch (Kanonas) { case KanonasKind.Apodipno: //TODO: добавить реализацию break; case KanonasKind.Mesoniktiko: //TODO: добавить реализацию break; case KanonasKind.Orthros1: result = GetOrthrosKanonas(dayWorship, 0); break; case KanonasKind.Orthros2: result = GetOrthrosKanonas(dayWorship, 1); break; case KanonasKind.Orthros3: result = GetOrthrosKanonas(dayWorship, 2); break; } } return(result); Kanonas GetOrthrosKanonas(DayStructureBase day, int index) { return((day.GetElement().Orthros?.Kanones?.Count > index) ? day.GetElement().Orthros.Kanones[index] : null); } }
protected DayContainer GetDayContainer(RuleHandlerSettings settings) { //разбираемся с source DayStructureBase dayContainer = null; switch (Source) { case YmnosSource.Menology1: dayContainer = (settings.Menologies.Count > 0) ? settings.Menologies[0] : null; break; case YmnosSource.Menology2: dayContainer = (settings.Menologies.Count > 1) ? settings.Menologies[1] : null; break; case YmnosSource.Menology3: dayContainer = (settings.Menologies.Count > 2) ? settings.Menologies[2] : null; break; case YmnosSource.Triodion1: dayContainer = (settings.Triodions.Count > 0) ? settings.Triodions[0] : null; break; case YmnosSource.Oktoikh: dayContainer = settings.OktoikhDay; break; case YmnosSource.WeekDay: { dayContainer = queryProcessor.Process(new WeekDayAppQuery(settings.Date.DayOfWeek)); } break; } //if (dayContainer == null) //{ // throw new KeyNotFoundException("YmnosStructureRule source not found: " + Source.ToString()); //} return(dayContainer?.GetElement(serializer)); }
protected Kanonas GetKanonas(RuleHandlerSettings settings) { Kanonas result = null; //разбираемся с source DayStructureBase dayWorship = null; switch (Source) { case KanonasSource.Menology1: dayWorship = (settings.Menologies.Count > 0) ? settings.Menologies[0] : null; break; case KanonasSource.Menology2: dayWorship = (settings.Menologies.Count > 1) ? settings.Menologies[1] : null; break; case KanonasSource.Menology3: dayWorship = (settings.Menologies.Count > 2) ? settings.Menologies[2] : null; break; case KanonasSource.Triodion1: dayWorship = (settings.Triodions.Count > 0) ? settings.Triodions[0] : null; break; case KanonasSource.Oktoikh: dayWorship = settings.OktoikhDay; break; } if (dayWorship != null) { switch (Kanonas) { case KanonasKind.Apodipno: //TODO: добавить реализацию break; case KanonasKind.Mesoniktiko: //TODO: добавить реализацию break; case KanonasKind.Orthros1: result = GetOrthrosKanonas(dayWorship, 0); break; case KanonasKind.Orthros2: result = GetOrthrosKanonas(dayWorship, 1); break; case KanonasKind.Orthros3: result = GetOrthrosKanonas(dayWorship, 2); break; } } return(result); Kanonas GetOrthrosKanonas(DayStructureBase day, int index) { var element = day.GetElement(Serializer); return((element.Orthros?.Kanones?.Count > index) ? element.Orthros.Kanones[index] : default(Kanonas)); } }
/// <summary> /// Возвращает указанные в правиле богослужебные тексты. /// </summary> /// <param name="date"></param> /// <param name="handler"></param> /// <returns>Если таковые не объявлены в DayService, возвращает NULL.</returns> public virtual DayElementBase Calculate(RuleHandlerSettings settings) { if (!IsValid) { return(null); } YmnosStructure result = null; //разбираемся с source DayStructureBase dayWorship = null; switch (Source) { case YmnosSource.Item1: dayWorship = (settings.DayWorships.Count > 0) ? settings.DayWorships[0] : null; break; case YmnosSource.Item2: dayWorship = (settings.DayWorships.Count > 1) ? settings.DayWorships[1] : null; break; case YmnosSource.Item3: dayWorship = (settings.DayWorships.Count > 2) ? settings.DayWorships[2] : null; break; case YmnosSource.Oktoikh: dayWorship = settings.OktoikhDay; break; } //if (dayWorship == null) //{ // throw new KeyNotFoundException("YmnosStructureRule source not found: " + Source.ToString()); //} //не выдаем ошибки, если день не найден if (dayWorship != null) { //теперь разбираемся с place И kind YmnosGroup group = null; List <YmnosGroup> groups = null; switch (Kind) { case YmnosRuleKind.YmnosRule: groups = dayWorship.GetElement().GetYmnosStructure(Place.Value, Count, StartFrom)?.Groups; if (groups != null) { result = new YmnosStructure(); result.Groups.AddRange(groups); } break; case YmnosRuleKind.DoxastichonRule: group = dayWorship.GetElement().GetYmnosStructure(Place.Value, Count, StartFrom)?.Doxastichon; if (group != null) { result = new YmnosStructure { Doxastichon = group }; } break; case YmnosRuleKind.TheotokionRule: groups = dayWorship.GetElement().GetYmnosStructure(Place.Value, Count, StartFrom)?.Theotokion; if (groups != null) { result = new YmnosStructure(); result.Theotokion.AddRange(groups); } break; } } return(result); }