fix: negative perf color, parallel SP calls in chart controller, sort comment
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user