refactor: extract ResolveIsinAsync helper in FundReportController

This commit is contained in:
2026-06-08 17:53:18 +02:00
parent b3024f953d
commit 14bc7f772b

View File

@@ -43,24 +43,10 @@ public class FundReportController : ControllerBase
[FromQuery] string? alias = null,
[FromQuery] bool branding = false)
{
string? isin = null;
if (!string.IsNullOrEmpty(p))
{
try { isin = _crypto.DecryptIsin(p); }
catch (Exception ex)
{
_logger.LogWarning(ex, "Errore decodifica ISIN cifrato (fund)");
return BadRequest("Parametro 'p' non valido.");
}
}
else if (!string.IsNullOrEmpty(alias))
{
isin = await _dataService.FindIsinByAliasIdAsync(alias);
}
var (isin, error) = await ResolveIsinAsync(p, alias, "fund");
if (error != null) return error;
if (string.IsNullOrEmpty(isin))
return BadRequest("Specificare 'p' (ISIN cifrato) o 'alias'.");
return await GenerateAndReturnPdf(isin, branding, inline: true);
}
@@ -70,27 +56,36 @@ public class FundReportController : ControllerBase
[FromQuery] string? alias = null,
[FromQuery] bool branding = false)
{
string? isin = null;
if (!string.IsNullOrEmpty(p))
{
try { isin = _crypto.DecryptIsin(p); }
catch (Exception ex)
{
_logger.LogWarning(ex, "Errore decodifica ISIN cifrato (fund download)");
return BadRequest("Parametro 'p' non valido.");
}
}
else if (!string.IsNullOrEmpty(alias))
{
isin = await _dataService.FindIsinByAliasIdAsync(alias);
}
var (isin, error) = await ResolveIsinAsync(p, alias, "fund download");
if (error != null) return error;
if (string.IsNullOrEmpty(isin))
return BadRequest("Specificare 'p' (ISIN cifrato) o 'alias'.");
return await GenerateAndReturnPdf(isin, branding, inline: false);
}
private async Task<(string? Isin, IActionResult? Error)> ResolveIsinAsync(
string? p, string? alias, string context)
{
if (!string.IsNullOrEmpty(p))
{
try
{
return (_crypto.DecryptIsin(p), null);
}
catch (Exception ex)
{
_logger.LogWarning(ex, "Errore decodifica ISIN cifrato ({Context})", context);
return (null, BadRequest("Parametro 'p' non valido."));
}
}
if (!string.IsNullOrEmpty(alias))
{
var isin = await _dataService.FindIsinByAliasIdAsync(alias);
return (isin, null);
}
return (null, null);
}
private async Task<IActionResult> GenerateAndReturnPdf(string isin, bool branding, bool inline)
{
try