fix: negative perf color, parallel SP calls in chart controller, sort comment

This commit is contained in:
2026-06-08 18:01:20 +02:00
parent 201b3b39c4
commit 9a73ae9a1b
2 changed files with 12 additions and 6 deletions

View File

@@ -44,25 +44,31 @@ public class FundChartController : ControllerBase
try try
{ {
var info = await _dataService.GetFundInfoAsync(isin); var infoTask = _dataService.GetFundInfoAsync(isin);
var points = await _dataService.GetChartPricesAsync(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}"); return NotFound($"Nessun dato per ISIN {isin}");
var chartTitle = info?.Strumento ?? isin;
bool isJpeg = format.Equals("jpg", StringComparison.OrdinalIgnoreCase) bool isJpeg = format.Equals("jpg", StringComparison.OrdinalIgnoreCase)
|| format.Equals("jpeg", StringComparison.OrdinalIgnoreCase); || format.Equals("jpeg", StringComparison.OrdinalIgnoreCase);
if (format.Equals("pdf", 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); var pdfBytes = WrapPngInPdf(pngBytes);
Response.Headers.Append("Content-Disposition", Response.Headers.Append("Content-Disposition",
$"inline; filename=chart_fund_{isin}.pdf"); $"inline; filename=chart_fund_{isin}.pdf");
return File(pdfBytes, "application/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) if (save && isJpeg)
await SaveChartToDiskAsync(isin, imgBytes); await SaveChartToDiskAsync(isin, imgBytes);

View File

@@ -66,7 +66,7 @@ public class FundDataService : IFundDataService
_logger.LogError(ex, "Errore GetChartPricesAsync per ISIN {Isin}", isin); _logger.LogError(ex, "Errore GetChartPricesAsync per ISIN {Isin}", isin);
throw; 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; return points;
} }