diff --git a/CertReports.Syncfusion/Controllers/FundChartController.cs b/CertReports.Syncfusion/Controllers/FundChartController.cs index a4fc268..803e3b6 100644 --- a/CertReports.Syncfusion/Controllers/FundChartController.cs +++ b/CertReports.Syncfusion/Controllers/FundChartController.cs @@ -44,25 +44,31 @@ public class FundChartController : ControllerBase try { - var info = await _dataService.GetFundInfoAsync(isin); - var points = await _dataService.GetChartPricesAsync(isin); + var infoTask = _dataService.GetFundInfoAsync(isin); + var pointsTask = _dataService.GetChartPricesAsync(isin); + await Task.WhenAll(infoTask, pointsTask); - if (info == null || points.Count == 0) + var info = infoTask.Result; + var points = pointsTask.Result; + + if (points.Count == 0) return NotFound($"Nessun dato per ISIN {isin}"); + var chartTitle = info?.Strumento ?? isin; + bool isJpeg = format.Equals("jpg", StringComparison.OrdinalIgnoreCase) || format.Equals("jpeg", StringComparison.OrdinalIgnoreCase); if (format.Equals("pdf", StringComparison.OrdinalIgnoreCase)) { - var pngBytes = FundSkiaChartRenderer.Render(points, info.Strumento, width, height); + var pngBytes = FundSkiaChartRenderer.Render(points, chartTitle, width, height); var pdfBytes = WrapPngInPdf(pngBytes); Response.Headers.Append("Content-Disposition", $"inline; filename=chart_fund_{isin}.pdf"); return File(pdfBytes, "application/pdf"); } - var imgBytes = FundSkiaChartRenderer.Render(points, info.Strumento, width, height, jpeg: isJpeg); + var imgBytes = FundSkiaChartRenderer.Render(points, chartTitle, width, height, jpeg: isJpeg); if (save && isJpeg) await SaveChartToDiskAsync(isin, imgBytes); diff --git a/CertReports.Syncfusion/Services/Implementations/FundDataService.cs b/CertReports.Syncfusion/Services/Implementations/FundDataService.cs index d5e0fa7..42badaf 100644 --- a/CertReports.Syncfusion/Services/Implementations/FundDataService.cs +++ b/CertReports.Syncfusion/Services/Implementations/FundDataService.cs @@ -66,7 +66,7 @@ public class FundDataService : IFundDataService _logger.LogError(ex, "Errore GetChartPricesAsync per ISIN {Isin}", isin); throw; } - points.Sort((a, b) => a.Date.CompareTo(b.Date)); + points.Sort((a, b) => a.Date.CompareTo(b.Date)); // defensive: SP returns ASC but enforce here return points; }