Implementato sistema robusto di salvataggio/caricamento profili Data Coupler

- Aggiunto metodo GetCredentialIdByNameAsync in CredentialService per recuperare ID credenziali per nome
- Implementata gestione robusta dei profili duplicati con riattivazione, sovrascrittura e auto-rinomina
- Migliorata logica di caricamento profili con simulazione workflow utente e logging dettagliato
- Fixata gestione errori UNIQUE constraint nel salvataggio profili
- Aggiunto supporto per salvataggio ID credenziali reali invece di placeholder
- Implementato metodo GetProfileByNameIncludingInactiveAsync per gestire profili inattivi
- Aggiunto logging esteso per debug e troubleshooting
- Integrato componente ProfileSaver nella UI principale
- Risolti errori di compilazione e validazione build completa
- Migliorata gestione errori con feedback utente per credenziali/entità mancanti
This commit is contained in:
Alessio Dal Santo
2025-07-03 16:30:57 +02:00
parent d837339f7e
commit 65ed2bb93a
19 changed files with 967 additions and 115 deletions
@@ -39,6 +39,9 @@ public interface ICredentialService
Task<bool> DeleteCredentialAsync(int id);
Task<bool> DeleteCredentialAsync(string name);
Task<List<string>> GetCredentialNamesAsync(CredentialType? type = null);
// Helper methods to get credential ID by name
Task<int?> GetCredentialIdByNameAsync(string name, CredentialType type);
}
/// <summary>
@@ -960,5 +963,27 @@ public class CredentialService : ICredentialService
credentialValue.Contains("*** ERRORE DECRITTOGRAFIA ***");
}
/// <summary>
/// Ottiene l'ID di una credenziale per nome e tipo
/// </summary>
/// <param name="name">Nome della credenziale</param>
/// <param name="type">Tipo della credenziale</param>
/// <returns>ID della credenziale se trovata, null altrimenti</returns>
public async Task<int?> GetCredentialIdByNameAsync(string name, CredentialType type)
{
try
{
var entity = await _context.Credentials
.FirstOrDefaultAsync(c => c.Name == name && c.Type == type.ToString() && c.IsActive);
return entity?.Id;
}
catch (Exception ex)
{
_logger.LogError(ex, "Errore nel recuperare l'ID della credenziale: {Name}, Tipo: {Type}", name, type);
return null;
}
}
#endregion
}