From 14bc7f772b353db4b7a32f5e7b90df031e34507a Mon Sep 17 00:00:00 2001 From: SmartRootsSrl Date: Mon, 8 Jun 2026 17:53:18 +0200 Subject: [PATCH] refactor: extract ResolveIsinAsync helper in FundReportController --- .../Controllers/FundReportController.cs | 59 +++++++++---------- 1 file changed, 27 insertions(+), 32 deletions(-) diff --git a/CertReports.Syncfusion/Controllers/FundReportController.cs b/CertReports.Syncfusion/Controllers/FundReportController.cs index 4b8db74..aaadb8b 100644 --- a/CertReports.Syncfusion/Controllers/FundReportController.cs +++ b/CertReports.Syncfusion/Controllers/FundReportController.cs @@ -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 GenerateAndReturnPdf(string isin, bool branding, bool inline) { try