private void RenderTable(StringBuilder resultStringBuilder, IReportPart reportSection, CancellationToken cancellationToken)
        {
            if (reportSection.ReportPartType == ReportSectionDisplayType.Table)
            {
                IEnumerable <object> table = reportSection.Parts;

                if (table != null && table.Count() > 0)
                {
                    resultStringBuilder.Append($"<table title='{GetHtmlEncodedString(reportSection.GroupHeader)}' ");

                    if (!string.IsNullOrWhiteSpace(reportSection.GroupFooter))
                    {
                        resultStringBuilder.Append($" footer='{GetHtmlEncodedString(reportSection.GroupFooter)}' >");
                    }
                    else
                    {
                        resultStringBuilder.Append(" >");
                    }

                    RenderTableHeader(resultStringBuilder, table.ElementAt(0));
                    foreach (var row in table)
                    {
                        if (cancellationToken.IsCancellationRequested)
                        {
                            resultStringBuilder.Clear();
                            return;
                        }

                        RenderTableRow(resultStringBuilder, row);
                    }

                    resultStringBuilder.Append("</table>");
                }
            }
        }
 private void AddCollectionToReportPart(IList <Employee> employeesCollection, IReportPart reportPart)
 {
     foreach (var employeeObject in employeesCollection)
     {
         reportPart.Parts.Add(employeeObject);
     }
 }
        public override void ConvertToXml(ref StringBuilder sb, IReportPart reportContentItem, CancellationToken cancellationToken)
        {
            if (cancellationToken.IsCancellationRequested)
            {
                return;
            }

            if (!string.IsNullOrWhiteSpace(reportContentItem.GroupHeader))
            {
                sb.Append($"<label>{GetHtmlEncodedString(reportContentItem.GroupHeader)}</label>");
            }

            foreach (var part in reportContentItem.Parts)
            {
                if (cancellationToken.IsCancellationRequested)
                {
                    return;
                }

                RenderLabel(sb, part);
            }

            if (cancellationToken.IsCancellationRequested)
            {
                return;
            }

            if (!string.IsNullOrWhiteSpace(reportContentItem.GroupFooter))
            {
                sb.Append($"<label>{GetHtmlEncodedString(reportContentItem.GroupFooter)}</label>");
            }
        }
 /// <summary>
 /// Converts to XML.
 /// </summary>
 /// <param name="resultStringBuilder">The result string builder.</param>
 /// <param name="reportContentItem">The report content item.</param>
 public override void ConvertToXml(ref StringBuilder resultStringBuilder, IReportPart reportContentItem)
 {
     this.ConvertToXml(ref resultStringBuilder, reportContentItem, CancellationToken.None);
 }
 /// <summary>
 /// Converts to XML.
 /// </summary>
 /// <param name="resultStringBuilder">The result string builder.</param>
 /// <param name="reportContentItem">The report content item.</param>
 /// <param name="cancellationToken">The cancellation token.</param>
 public override void ConvertToXml(ref StringBuilder resultStringBuilder, IReportPart reportContentItem, CancellationToken cancellationToken)
 {
     this.RenderTable(resultStringBuilder, reportContentItem, cancellationToken);
 }
 /// <summary>
 /// Converts to XML.
 /// </summary>
 /// <param name="resultContainer">The result container.</param>
 /// <param name="reportContentItem">The report content item.</param>
 /// <param name="cancellationToken">The cancellation token.</param>
 public abstract void ConvertToXml(ref StringBuilder resultContainer, IReportPart reportContentItem, CancellationToken cancellationToken);
 /// <summary>
 /// Converts to XML.
 /// Note: This is marked as obsolete method.
 /// </summary>
 /// <param name="resultContainer">The string builder instance.</param>
 /// <param name="reportContentItem">The report content item.</param>
 public abstract void ConvertToXml(ref StringBuilder resultContainer, IReportPart reportContentItem);