public string Execute(FilteredOutputDay day) { if (day == null) { throw new ArgumentNullException("ScheduleDay"); } _resultStringBuilder.Clear(); _resultStringBuilder.AppendLine(day.Date.ToShortDateString()); if (day.Header != null) { _resultStringBuilder.AppendLine(day.Header.Name.Text); _resultStringBuilder.AppendLine($"Знак службы: {day.Header.SignName}"); } foreach (var element in day.Worships) { Render(element); } return(_resultStringBuilder.ToString()); }
public string Execute(FilteredOutputWorship viewModel) { var day = new FilteredOutputDay(); day.Worships.Add(viewModel); return(Execute(day)); }
public string Execute(FilteredOutputDay day) { //находим путь к файлу xslt var xsltFilePath = configRepo.GetConfigurationValue(XSLT_CONFIG); var xslt = new XslCompiledTransform(); xslt.Load(xsltFilePath); //получаем xml-строку var xml = xmlSerializer.Serialize(day); var xmlreader = XmlReader.Create(new StringReader(xml)); var stringWriter = new StringWriter(); var xmlWriter = XmlWriter.Create(stringWriter); //выполняем xslt-трансформацию xslt.Transform(xmlreader, xmlWriter); return(stringWriter.ToString()); }
/// <summary> /// Возвращает заполненный шаблон дня и список используемых картинок для вставки в итоговый документ /// </summary> /// <param name="dayRep"></param> /// <param name="typiconId"></param> /// <param name="day"></param> /// <returns></returns> private Result <GetDayTemplateResponse> GetFilledDayElements(PrintTemplateRepository dayRep, int typiconId, FilteredOutputDay day) { var dayTemplate = dayRep.GetDayTemplate(typiconId, day.Header?.SignNumber); if (dayTemplate == null) { return(Result.Fail <GetDayTemplateResponse>($"Ошибка: печатный шаблон дня не был найден")); } //заменяем дату - обязательно var dateReplacement = dayTemplate.XmlElements.ReplaceElementsByText(OutputTemplateConstants.Date, day.Date.ToString("dd MMMM yyyy г.")); //заменяем день недели - не обязательно var dayOfWeekReplacement = dayTemplate.XmlElements.ReplaceElementsByText(OutputTemplateConstants.DayOfWeek, day.Date.ToString("dddd")); //заменяем имя дня - не обязательно string dayName = (day.Header != null) ? day.Header.Name.Text : string.Empty; var dayNameReplacement = dayTemplate.XmlElements.ReplaceElementsByText(OutputTemplateConstants.DayName, dayName); //вставляем службы var worshipsAppending = AppendWorships(dayTemplate.XmlElements, day.Worships); var res = Result.Combine(dateReplacement //, dayOfWeekReplacement //, dayNameReplacement , worshipsAppending); return((res.Success) ? Result.Ok(dayTemplate) : Result.Fail <GetDayTemplateResponse>(res.Error)); }
private Table GetDayTable(FilteredOutputDay day, List <Table> templateTables) { Table dayTable = new Table(); try { int signNumber = (day.Header != null) ? day.Header.SignNumber : 0; //в зависимости от того, какой знак дня - берем для заполнения шаблона соответствующую таблицу в templateTables Table dayTemplateTable = templateTables[signNumber + 1] ?? templateTables[1]; TableRow tr = (TableRow)dayTemplateTable.ChildElements[2].Clone(); TableCell tdDayofweek = (TableCell)tr.ChildElements[2]; TableCell tdName = (TableCell)tr.ChildElements[3]; string sDayofweek = day.Date.ToString("dddd").ToUpper(); string sName = (day.Header != null) ? day.Header.Name.Text : string.Empty; //TODO: реализовать функционал bool bIsNameBold = false;//(dayNode.SelectSingleNode("name").Attributes["isbold"] != null); SetTextToCell(tdDayofweek, sDayofweek, false, false); SetTextToCell(tdName, sName, bIsNameBold, false); dayTable.AppendChild(tr); tr = (TableRow)dayTemplateTable.ChildElements[3].Clone(); TableCell tdDate = (TableCell)tr.ChildElements[2]; string sDate = day.Date.ToString("dd MMMM yyyy г."); SetTextToCell(tdDate, sDate, false, false); dayTable.AppendChild(tr); foreach (var service in day.Worships) { tr = (TableRow)dayTemplateTable.ChildElements[4].Clone(); TableCell tdTime = (TableCell)tr.ChildElements[2]; TableCell tdSName = (TableCell)tr.ChildElements[3]; string sTime = service.Time.ToString(); string sSName = service.Name.Text.Text; bool bIsTimeBold = false; //(serviceNode.Attributes["istimebold"] != null); bool bIsTimeRed = false; //(serviceNode.Attributes["istimered"] != null); bool bIsServiceNameBold = false; //(serviceNode.Attributes["isnamebold"] != null); bool bIsServiceNameRed = false; //(serviceNode.Attributes["isnamered"] != null); SetTextToCell(tdTime, sTime, bIsTimeBold, bIsTimeRed); SetTextToCell(tdSName, sSName, bIsServiceNameBold, bIsServiceNameRed); //additionalName if (service.AdditionalName != null) { AppendTextToCell(tdSName, service.AdditionalName.Text.Text, true, false); } //tr.ChildElements[1].InnerXml = dayNode.SelectSingleNode("time").InnerText; //tr.ChildElements[2].InnerXml = dayNode.SelectSingleNode("name").InnerText; dayTable.AppendChild(tr); } } catch (IndexOutOfRangeException) { } return(dayTable); }