Files
Data-Coupler/DataConnection/CredentialManagement/Interfaces/IDataConnectionCredentialService.cs
T
Alessio Dal Santo 960166be9f feat: Implementata eliminazione cascata credenziali con modale di conferma
Aggiunta funzionalità completa per l'eliminazione sicura delle credenziali
con rimozione automatica di tutti i dati associati.

Modifiche principali:

Backend:
- Aggiunta interfaccia ICredentialService.DeleteCredentialCascadeAsync()
- Implementato CredentialService.DeleteCredentialCascadeAsync() con gestione transazionale
- Aggiornata IDataConnectionCredentialService con metodi cascade delete
- Implementati wrapper in DataConnectionCredentialService

Eliminazione cascata gestisce:
- Execution histories delle schedulazioni
- Profile schedules associate ai profili
- Data Coupler profiles che usano le credenziali
- Key associations per credenziali REST
- Credenziale stessa

Frontend (CredentialManagement.razor):
- Aggiunto modale Bootstrap di conferma eliminazione con design danger
- Messaggio di attenzione chiaro che elenca cosa verrà eliminato
- Refactoring metodo DeleteCredential() per usare modale invece di confirm JS
- Aggiunti metodi CloseDeleteConfirmModal() e ConfirmDeleteCredential()

Sicurezza:
- Eliminazione fisica (hard delete) con transazione database
- Rollback automatico in caso di errore
- Logging dettagliato di ogni operazione
- Conferma esplicita dell'utente richiesta
2025-10-08 15:54:54 +02:00

92 lines
5.3 KiB
C#

using CredentialManager.Models;
using CredentialManager.Services;
namespace DataConnection.CredentialManagement.Interfaces;
/// <summary>
/// Interfaccia per la gestione delle credenziali integrate con DataConnection
/// </summary>
public interface IDataConnectionCredentialService
{
// Database credentials
Task<DatabaseCredential?> GetDatabaseCredentialAsync(string name);
Task<DatabaseCredential?> GetDatabaseCredentialAsync(int id);
Task<List<DatabaseCredential>> GetAllDatabaseCredentialsAsync();
Task<int> SaveDatabaseCredentialAsync(DatabaseCredential credential);
Task<bool> DeleteDatabaseCredentialAsync(int id);
Task<bool> DeleteDatabaseCredentialAsync(string name);
// REST API credentials
Task<RestApiCredential?> GetRestApiCredentialAsync(string name);
Task<RestApiCredential?> GetRestApiCredentialAsync(int id);
Task<List<RestApiCredential>> GetAllRestApiCredentialsAsync();
Task<int> SaveRestApiCredentialAsync(RestApiCredential credential);
Task<bool> DeleteRestApiCredentialAsync(int id);
Task<bool> DeleteRestApiCredentialAsync(string name);
// SAP B1 Service Layer credentials
Task<SapB1ServiceLayerCredential?> GetSapB1CredentialAsync(string name);
Task<SapB1ServiceLayerCredential?> GetSapB1CredentialAsync(int id);
Task<List<SapB1ServiceLayerCredential>> GetAllSapB1CredentialsAsync();
Task<int> SaveSapB1CredentialAsync(SapB1ServiceLayerCredential credential);
Task<bool> DeleteSapB1CredentialAsync(int id);
Task<bool> DeleteSapB1CredentialAsync(string name);
// Salesforce credentials
Task<SalesforceCredential?> GetSalesforceCredentialAsync(string name);
Task<SalesforceCredential?> GetSalesforceCredentialAsync(int id);
Task<List<SalesforceCredential>> GetAllSalesforceCredentialsAsync();
Task<int> SaveSalesforceCredentialAsync(SalesforceCredential credential);
Task<bool> DeleteSalesforceCredentialAsync(int id);
Task<bool> DeleteSalesforceCredentialAsync(string name);
// DataConnection specific operations
Task<string> GetConnectionStringAsync(string credentialName);
Task<string> GetConnectionStringAsync(int credentialId);
Task<DataConnection.EF.DbManagerOptions> GetDbManagerOptionsAsync(string credentialName);
Task<DataConnection.EF.DbManagerOptions> GetDbManagerOptionsAsync(int credentialId);
Task<DataConnection.REST.Configuration.RestServiceOptions> GetRestServiceOptionsAsync(string credentialName);
Task<DataConnection.REST.Configuration.RestServiceOptions> GetRestServiceOptionsAsync(int credentialId);
// Helper methods
Task<int?> GetCredentialIdByNameAsync(string name, CredentialManager.Models.CredentialType type);
// Connection testing
Task<(bool Success, string Message)> TestDatabaseConnectionAsync(string credentialName);
Task<(bool Success, string Message)> TestDatabaseConnectionAsync(DatabaseCredential credential);
Task<(bool Success, string Message)> TestRestApiConnectionAsync(string credentialName);
Task<(bool Success, string Message)> TestRestApiConnectionAsync(RestApiCredential credential);
Task<(bool Success, string Message)> TestSapB1ConnectionAsync(string credentialName);
Task<(bool Success, string Message)> TestSapB1ConnectionAsync(SapB1ServiceLayerCredential credential);
Task<(bool Success, string Message)> TestSalesforceConnectionAsync(string credentialName);
Task<(bool Success, string Message)> TestSalesforceConnectionAsync(SalesforceCredential credential);
// Key associations
Task<int> SaveKeyAssociationAsync(KeyAssociation association);
Task<int> SaveKeyAssociationParallelAsync(KeyAssociation association);
Task<KeyAssociation?> FindKeyAssociationByValueAsync(string keyValue, string destinationEntity, string restCredentialName);
Task<KeyAssociation?> FindKeyAssociationByValueAsync(string keyValue);
Task<List<KeyAssociation>> GetKeyAssociationsByDestinationAsync(string destinationEntity, string restCredentialName);
Task<List<KeyAssociation>> GetAllActiveKeyAssociationsAsync();
Task<List<KeyAssociation>> GetAllKeyAssociationsAsync();
Task<bool> UpdateKeyAssociationAsync(KeyAssociation association);
Task<bool> DeactivateKeyAssociationAsync(int id);
Task<bool> DeleteKeyAssociationAsync(int id);
Task<int> ClearKeyAssociationsAsync(string destinationEntity, string restCredentialName);
Task<int> ClearAllKeyAssociationsAsync();
Task<List<KeyAssociation>> GetInvalidKeyAssociationsAsync(string destinationEntity, string restCredentialName);
Task<int> CleanupInvalidKeyAssociationsAsync(string destinationEntity, string restCredentialName);
Task<bool> UpdateKeyAssociationLastVerifiedAsync(int id);
Task<AssociationStatistics> GetKeyAssociationStatisticsAsync();
// Parallel key association operations
Task<bool> SaveKeyAssociationParallelAsync(string keyValue, string destinationEntity, string destinationId, string restCredentialName);
Task<KeyAssociation?> FindKeyAssociationByValueParallelAsync(string keyValue, string destinationEntity, string restCredentialName);
Task<KeyAssociation?> FindKeyAssociationByValueParallelAsync(string keyValue);
Task<bool> DeleteKeyAssociationParallelAsync(int id);
// Cascade delete operations
Task<bool> DeleteCredentialCascadeAsync(string name);
Task<bool> DeleteCredentialCascadeAsync(int id);
}