public static void AppendViewModel(this ItemText text, IRuleHandler handler, OutputSectionModelCollection viewModel) { if (text?.IsEmpty == false) { viewModel.Add(OutputSectionFactory.Create(TextHolderKind.Text, new List <ItemTextNoted> { new ItemTextNoted(text) })); } }
public static OutputSectionModelCollection GetViewModel(this YmnosGroup group, IRuleHandler handler, IRuleSerializerRoot serializer) { OutputSectionModelCollection viewModel = new OutputSectionModelCollection(); group.Annotation.AppendViewModel(handler, viewModel); group.Prosomoion.AppendViewModel(handler.Settings.TypiconVersionId, serializer, viewModel, group.Ihos); AppendYmnis(group.Ymnis, handler, serializer, viewModel); return(viewModel); }
private void AppendIkos(CreateViewModelRequest <KontakionRule> req, ItemText ikos, OutputSectionModel view) { var viewModel = new OutputSectionModelCollection() { view }; ikos.AppendViewModel(req.Handler, viewModel); req.AppendModelAction(viewModel); }
private void AppendKontakion(CreateViewModelRequest <KontakionRule> req, Kontakion kontakion, OutputSectionModel view) { var viewModel = new OutputSectionModelCollection() { view }; kontakion.Annotation.AppendViewModel(req.Handler, viewModel); kontakion.Prosomoion.AppendViewModel(req.Handler.Settings.TypiconVersionId, Serializer, viewModel); kontakion.Ymnos.AppendViewModel(req.Handler, viewModel); req.AppendModelAction(viewModel); }
public static void AppendViewModel(this Prosomoion prosomoion, int typiconVersionId, IRuleSerializerRoot serializer, OutputSectionModelCollection viewModel, int?ihos = null) { ItemText ihosItemText = null; ItemText prosomoionItemText = null; if (ihos != null) { //текст "Глас" ihosItemText = serializer.GetCommonRuleItemTextValue(typiconVersionId, CommonRuleConstants.IhosText); ihosItemText.ReplaceForEach("[ihos]", ihos.Value); } else { ihosItemText = new ItemText(); } //самоподобен? if (prosomoion?.Self == true) { prosomoionItemText = serializer.GetCommonRuleItemTextValue(typiconVersionId, CommonRuleConstants.SelfText); } //если подобен else if (prosomoion?.IsEmpty == false) { prosomoionItemText = serializer.GetCommonRuleItemTextValue(typiconVersionId, CommonRuleConstants.ProsomoionText); prosomoionItemText.ReplaceForEach("[name]", prosomoion); } else { prosomoionItemText = new ItemText(); } //соединяем воедино ihosItemText.Merge(prosomoionItemText); viewModel.Add(OutputSectionFactory.Create(TextHolderKind.Text, new List <ItemTextNoted> { new ItemTextNoted(ihosItemText) })); }
private static void AppendYmnis(List <Ymnos> ymnis, IRuleHandler handler, IRuleSerializerRoot serializer, OutputSectionModelCollection viewModel) { var(StihosText, ChoirText) = GetStringValues(handler, serializer); foreach (Ymnos ymnos in ymnis) { //добавляем стих и песнопение как отдельные объекты foreach (ItemText stihos in ymnos.Stihoi) { viewModel.Add(OutputSectionFactory.Create(TextHolderKind.Stihos, StihosText, new List <ItemTextNoted> { new ItemTextNoted(stihos) })); } viewModel.Add(OutputSectionFactory.Create(TextHolderKind.Choir, ChoirText, new List <ItemTextNoted> { new ItemTextNoted(ymnos.Text) })); } }
public override void Create(CreateViewModelRequest <YmnosStructureRule> req) { if (req.Element == null || req.Element.Structure == null) { //TODO: просто ничего не делаем, хотя надо бы это обрабатывать return; } OutputSectionModelCollection viewModel = new OutputSectionModelCollection(); //здесь вставляется индивидуальная обработка наследников AppendCustomForm(req /*, viewModel*/); //а теперь добавляем стихиры, общие для всех наследников данного класса YmnosStructure ymnosStructure = req.Element.Structure; //Groups foreach (var group in ymnosStructure.Groups) { viewModel.AddRange(group.GetViewModel(req.Handler, Serializer)); } SetStringCommonRules(ymnosStructure, req.Handler.Settings.TypiconVersionId); //Doxastichon if (ymnosStructure.Doxastichon != null) { viewModel.AddRange(ymnosStructure.Doxastichon.GetViewModel(req.Handler, Serializer)); } //Theotokion if (ymnosStructure.Theotokion?.Count > 0) { viewModel.AddRange(ymnosStructure.Theotokion[0].GetViewModel(req.Handler, Serializer)); } req.AppendModelAction(viewModel); }
public void OutputSectionModelCollection_Serialize() { var serializer = new TypiconSerializer(); var collection = new OutputSectionModelCollection() { new OutputSectionModel() { Kind = ElementViewModelKind.Choir, KindText = new ItemText(new ItemTextUnit("cs-ru", "Заголовок"), new ItemTextUnit("ru-ru", "Заголовок")), Paragraphs = new List <ItemTextNoted>() { new ItemTextNoted(new ItemText(new ItemTextUnit("cs-ru", "Параграф1"), new ItemTextUnit("ru-ru", "Параграф1"))), new ItemTextNoted(new ItemText(new ItemTextUnit("cs-ru", "Параграф2"), new ItemTextUnit("ru-ru", "Параграф2"))) } } }; var str = serializer.Serialize(collection); var deserialized = serializer.Deserialize <OutputSectionModelCollection>(str); Assert.NotNull(deserialized); }