public void Export(PowerTrade aggregatedTrade, string directoryPath) { try { var data = DateTimeManager.EnrichDataWithDates(aggregatedTrade); var fullPath = CombineFullPathToExport(directoryPath, aggregatedTrade); if (!Directory.Exists(directoryPath)) { Directory.CreateDirectory(directoryPath); } int suffix = 1; while (File.Exists(fullPath)) { fullPath = CombineFullPathToExport(directoryPath, aggregatedTrade, suffix.ToString()); suffix++; } using (var writer = new StreamWriter(fullPath)) using (var csv = new CsvWriter(writer)) { csv.WriteRecords(data); } } catch (Exception e) { throw new Exception("Report export failed", e.InnerException); } }
public void GenerateReport(DateTime dateTimeUtc) { _log.Info("Report generation started"); var reportingDate = DateTimeManager.CalculateReportingDate(dateTimeUtc, _reporterConfiguration.GetReportingDayStartOffset()); var trades = _powerTradesDataProvider.GetPowerTrades(reportingDate); _powerTradesManager.Validate(trades); var aggregatedTrade = _powerTradesManager.Aggregate(trades); _powerTradesReportExporter.Export(aggregatedTrade, _reporterConfiguration.GetReportDirectory()); _log.Info("Report generation finished"); }