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));
        }
Beispiel #5
0
        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);
        }