From fbe6d0ffc9d43addd34cb8dbb20085856b62ebc1 Mon Sep 17 00:00:00 2001 From: michele Date: Thu, 2 Oct 2025 16:14:05 +0200 Subject: [PATCH 1/4] metodo upload foto --- ApiPolo/Controllers/PoloController.cs | 49 ++++++++++++++++++++++++++- ApiPolo/appsettings.json | 4 +++ 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/ApiPolo/Controllers/PoloController.cs b/ApiPolo/Controllers/PoloController.cs index 2db27fc..9ecc67b 100644 --- a/ApiPolo/Controllers/PoloController.cs +++ b/ApiPolo/Controllers/PoloController.cs @@ -13969,7 +13969,7 @@ namespace ApiPolo.Controllers transaction.Commit(); } //devo fare la copia del logo e metterlo nella cartella del server a partire dal logo scritto in tabella - model = await readImgAndSave(model.azienda, model.tecnico, _confLette.path_buoni); + //model = await readImgAndSave(model.azienda, model.tecnico, _confLette.path_buoni); return StatusCode(StatusCodes.Status200OK, model); } @@ -14091,6 +14091,51 @@ namespace ApiPolo.Controllers //System.IO.File.WriteAllBytes("Foo.txt", data); } + [HttpPost("datiazienda/upload_logo")] + public async Task UploadLogo(IFormFile file, string token) + { + string ten = getClaimValueByToken(token, "tenant"); + string ten2 = getClaimValueByToken(token, "tenant2"); + + if (file == null || file.Length == 0) + return BadRequest("Nessun file ricevuto"); + + if (string.IsNullOrWhiteSpace(ten2)) + return BadRequest("Parametro azienda mancante"); + + try + { + string basePath = _configuration["Percorsi:PathLogo"]; + string publicBaseUrl = _configuration["Percorsi:PublicBaseUrl"]; + + string aziendaFolder = ten2.Trim(); + string folderPath = Path.Combine(basePath, aziendaFolder); + if (!Directory.Exists(folderPath)) + Directory.CreateDirectory(folderPath); + + string fullPath = Path.Combine(folderPath, file.FileName); + + using (var stream = new FileStream(fullPath, FileMode.Create)) + { + await file.CopyToAsync(stream); + } + + string fileUrl = $"{publicBaseUrl}{aziendaFolder}/{file.FileName}"; + + return Ok(new + { + message = "Logo caricato con successo", + url = fileUrl, + fileName = file.FileName + }); + } + catch (Exception ex) + { + return StatusCode(500, $"Errore durante il salvataggio: {ex.Message}"); + } + } + + /// VIRTUAL TASK: ricava il nome del file a partire dal path web public static string getNomeFile(string path) { @@ -14101,6 +14146,8 @@ namespace ApiPolo.Controllers return nome; } + + /// VIRTUAL TASK: dati Azienda [HttpGet("rapportiniList")] public async Task>> rapportiniList(string token) diff --git a/ApiPolo/appsettings.json b/ApiPolo/appsettings.json index 22a8136..0181d90 100644 --- a/ApiPolo/appsettings.json +++ b/ApiPolo/appsettings.json @@ -23,5 +23,9 @@ "ValidAudience": "http://localhost:4200", "ValidIssuer": "http://localhost:61955", "Secret": "ByYM000OLlMQG6VVVp1OH7Xzyr7gHuw1qvUC5dcGt3SNM" + }, + "Percorsi": { + "PathLogo": "/zucchetti/api/api-vt.poloinformatico.it/app/wwwroot/VIRTU/", + "PublicBaseUrl": "https://api-vt.poloinformatico.it/VIRTU/" } } From e78ea7dc8be7efc0b5c3b6ad734b1999838a7ffa Mon Sep 17 00:00:00 2001 From: michele Date: Fri, 3 Oct 2025 09:51:45 +0200 Subject: [PATCH 2/4] modifica metodo upload_logo --- ApiPolo/Controllers/PoloController.cs | 19 ++++++++++++++----- ApiPolo/appsettings.json | 2 +- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/ApiPolo/Controllers/PoloController.cs b/ApiPolo/Controllers/PoloController.cs index 9ecc67b..4960a33 100644 --- a/ApiPolo/Controllers/PoloController.cs +++ b/ApiPolo/Controllers/PoloController.cs @@ -14105,21 +14105,30 @@ namespace ApiPolo.Controllers try { - string basePath = _configuration["Percorsi:PathLogo"]; - string publicBaseUrl = _configuration["Percorsi:PublicBaseUrl"]; + // Percorso base su Linux (già presente nella macchina server) + string basePath = "/zucchetti/api/api-vt.poloinformatico.it/app/wwwroot/VIRTU"; + // Cartella azienda, es. "AZI02" string aziendaFolder = ten2.Trim(); - string folderPath = Path.Combine(basePath, aziendaFolder); - if (!Directory.Exists(folderPath)) - Directory.CreateDirectory(folderPath); + // Costruisco il percorso completo in modo portabile + string folderPath = Path.Combine(basePath, aziendaFolder); + + //// Creo la cartella se non esiste + //if (!Directory.Exists(folderPath)) + // Directory.CreateDirectory(folderPath); + + // Percorso finale del file string fullPath = Path.Combine(folderPath, file.FileName); + // Salvo il file fisicamente using (var stream = new FileStream(fullPath, FileMode.Create)) { await file.CopyToAsync(stream); } + // URL pubblico (se la cartella è servita via web) + string publicBaseUrl = _configuration["Percorsi:PublicBaseUrl"]; string fileUrl = $"{publicBaseUrl}{aziendaFolder}/{file.FileName}"; return Ok(new diff --git a/ApiPolo/appsettings.json b/ApiPolo/appsettings.json index 0181d90..ecbfb42 100644 --- a/ApiPolo/appsettings.json +++ b/ApiPolo/appsettings.json @@ -25,7 +25,7 @@ "Secret": "ByYM000OLlMQG6VVVp1OH7Xzyr7gHuw1qvUC5dcGt3SNM" }, "Percorsi": { - "PathLogo": "/zucchetti/api/api-vt.poloinformatico.it/app/wwwroot/VIRTU/", + "PathLogo": "/zucchetti/api/api-vt.poloinformatico.it/app/wwwroot/VIRTU", "PublicBaseUrl": "https://api-vt.poloinformatico.it/VIRTU/" } } From 00c31ceee3c2d0a34d55391e55e8bdbac1b23f63 Mon Sep 17 00:00:00 2001 From: michele Date: Fri, 3 Oct 2025 10:26:07 +0200 Subject: [PATCH 3/4] commit --- ApiPolo/Controllers/PoloController.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ApiPolo/Controllers/PoloController.cs b/ApiPolo/Controllers/PoloController.cs index 4960a33..7e47355 100644 --- a/ApiPolo/Controllers/PoloController.cs +++ b/ApiPolo/Controllers/PoloController.cs @@ -14135,7 +14135,8 @@ namespace ApiPolo.Controllers { message = "Logo caricato con successo", url = fileUrl, - fileName = file.FileName + fileName = file.FileName, + savedPath = fullPath // 👈 aggiunto per debug }); } catch (Exception ex) From d3cc5b85262e932f97978eb3d87bf58a94c53fec Mon Sep 17 00:00:00 2001 From: michele Date: Fri, 3 Oct 2025 11:23:45 +0200 Subject: [PATCH 4/4] Implemetanto metodo Upload_logo per caricamento loghi azienda --- ApiPolo/Controllers/PoloController.cs | 8 +------- ApiPolo/appsettings.json | 2 +- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/ApiPolo/Controllers/PoloController.cs b/ApiPolo/Controllers/PoloController.cs index 7e47355..480770d 100644 --- a/ApiPolo/Controllers/PoloController.cs +++ b/ApiPolo/Controllers/PoloController.cs @@ -14106,18 +14106,13 @@ namespace ApiPolo.Controllers try { // Percorso base su Linux (già presente nella macchina server) - string basePath = "/zucchetti/api/api-vt.poloinformatico.it/app/wwwroot/VIRTU"; + string basePath = _configuration["Percorsi:PathLogo"]; // Cartella azienda, es. "AZI02" string aziendaFolder = ten2.Trim(); // Costruisco il percorso completo in modo portabile string folderPath = Path.Combine(basePath, aziendaFolder); - - //// Creo la cartella se non esiste - //if (!Directory.Exists(folderPath)) - // Directory.CreateDirectory(folderPath); - // Percorso finale del file string fullPath = Path.Combine(folderPath, file.FileName); @@ -14136,7 +14131,6 @@ namespace ApiPolo.Controllers message = "Logo caricato con successo", url = fileUrl, fileName = file.FileName, - savedPath = fullPath // 👈 aggiunto per debug }); } catch (Exception ex) diff --git a/ApiPolo/appsettings.json b/ApiPolo/appsettings.json index ecbfb42..5be9820 100644 --- a/ApiPolo/appsettings.json +++ b/ApiPolo/appsettings.json @@ -25,7 +25,7 @@ "Secret": "ByYM000OLlMQG6VVVp1OH7Xzyr7gHuw1qvUC5dcGt3SNM" }, "Percorsi": { - "PathLogo": "/zucchetti/api/api-vt.poloinformatico.it/app/wwwroot/VIRTU", + "PathLogo": "./wwwroot/VIRTU", "PublicBaseUrl": "https://api-vt.poloinformatico.it/VIRTU/" } }