/// <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;
/// <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)); } }