Example #1
0
        /// <inheritdoc />
        public IEnumerable <string> GetData <TRow, TName>(IFormattableReport <TRow, TName> report, TRow row)
        {
            foreach (var propName in report.Properties)
            {
                switch (report.GetValue(propName, row))
                {
                case DateTime day:
                    yield return(day.ToString("dd-MM-yyyy"));

                    break;

                case Metrics metrics:
                    foreach (var data in GetMetricsData(metrics))
                    {
                        yield return(data);
                    }

                    break;

                case double doubleValue:
                    yield return(propName switch
                    {
                        "Rt" => doubleValue.ToString("00.00000000", CultureInfo.InvariantCulture),
                        "TTR" => doubleValue.ToString("###########0", CultureInfo.InvariantCulture),
                        _ => throw new ArgumentException($"Unsupported formatter for property value. Property - {propName}; Value - {doubleValue}")
                    });

                    break;
Example #2
0
        /// <summary>
        /// Writes <see cref="IFormattableReport{TRow,TName}"/>.
        /// </summary>
        /// <typeparam name="TRow">Report row id type parameter.</typeparam>
        /// <typeparam name="TName">Report names type parameter.</typeparam>
        /// <param name="report">Report to write.</param>
        public void WriteReport <TRow, TName>(IFormattableReport <TRow, TName> report)
        {
            using var writer = _storage.GetWriter(_formatter.GetName(report), report.ReportType);

            writer.WriteHeader(_formatter.GetHeader(report));
            foreach (var rowId in report.RowIds)
            {
                writer.WriteDataLine(_formatter.GetData(report, rowId));
            }
        }