34b47a2bd4
- Aggiunge modello RecordAssociation con migrazione database - Implementa servizio CRUD completo per gestione associazioni - Crea interfaccia utente avanzata per visualizzazione e gestione - Aggiunge funzionalità di filtro, paginazione e ricerca - Implementa azioni di massa (eliminazione, validazione, pulizia) - Aggiunge esportazione CSV delle associazioni - Integra validazione automatica degli ID destinazione - Implementa logica upsert robusta con controllo validità associazioni - Aggiunge selezione manuale chiavi per sorgenti non-database - Migliora UI con statistiche, modali di conferma e feedback operazioni - Refactoring completo logica trasferimento dati per utilizzare associazioni
80 lines
2.7 KiB
C#
80 lines
2.7 KiB
C#
using CredentialManager.Models;
|
|
|
|
namespace CredentialManager.Services;
|
|
|
|
/// <summary>
|
|
/// Interfaccia per il servizio di gestione delle associazioni record
|
|
/// </summary>
|
|
public interface IRecordAssociationService
|
|
{
|
|
/// <summary>
|
|
/// Salva una nuova associazione tra record sorgente e destinazione
|
|
/// </summary>
|
|
Task<int> SaveAssociationAsync(RecordAssociation association);
|
|
|
|
/// <summary>
|
|
/// Cerca un'associazione esistente tramite chiave sorgente
|
|
/// </summary>
|
|
Task<RecordAssociation?> FindAssociationAsync(string sourceName, string sourceKey, string destinationEntity);
|
|
|
|
/// <summary>
|
|
/// Ottiene tutte le associazioni per una sorgente specifica
|
|
/// </summary>
|
|
Task<List<RecordAssociation>> GetAssociationsBySourceAsync(string sourceName, string sourceType);
|
|
|
|
/// <summary>
|
|
/// Ottiene tutte le associazioni per un'entità di destinazione specifica
|
|
/// </summary>
|
|
Task<List<RecordAssociation>> GetAssociationsByDestinationAsync(string destinationEntity, string restCredentialName);
|
|
|
|
/// <summary>
|
|
/// Ottiene tutte le associazioni attive
|
|
/// </summary>
|
|
Task<List<RecordAssociation>> GetAllActiveAssociationsAsync();
|
|
|
|
/// <summary>
|
|
/// Aggiorna un'associazione esistente
|
|
/// </summary>
|
|
Task<bool> UpdateAssociationAsync(RecordAssociation association);
|
|
|
|
/// <summary>
|
|
/// Disattiva un'associazione (soft delete)
|
|
/// </summary>
|
|
Task<bool> DeactivateAssociationAsync(int id);
|
|
|
|
/// <summary>
|
|
/// Elimina definitivamente un'associazione
|
|
/// </summary>
|
|
Task<bool> DeleteAssociationAsync(int id);
|
|
|
|
/// <summary>
|
|
/// Pulisce le associazioni obsolete (opzionale)
|
|
/// </summary>
|
|
Task<int> CleanupOldAssociationsAsync(TimeSpan olderThan);
|
|
|
|
/// <summary>
|
|
/// Elimina tutte le associazioni per una specifica combinazione sorgente-destinazione
|
|
/// </summary>
|
|
Task<int> ClearAssociationsAsync(string sourceName, string destinationEntity, string restCredentialName);
|
|
|
|
/// <summary>
|
|
/// Elimina tutte le associazioni nel sistema
|
|
/// </summary>
|
|
Task<int> ClearAllAssociationsAsync();
|
|
|
|
/// <summary>
|
|
/// Verifica se un ID di destinazione esiste ancora nel sistema target
|
|
/// </summary>
|
|
Task<bool> ValidateDestinationIdAsync(string destinationId, string destinationEntity, string restCredentialName);
|
|
|
|
/// <summary>
|
|
/// Ottiene tutte le associazioni con ID di destinazione non validi
|
|
/// </summary>
|
|
Task<List<RecordAssociation>> GetInvalidAssociationsAsync(string destinationEntity, string restCredentialName);
|
|
|
|
/// <summary>
|
|
/// Pulisce le associazioni con ID di destinazione non più validi
|
|
/// </summary>
|
|
Task<int> CleanupInvalidAssociationsAsync(string destinationEntity, string restCredentialName);
|
|
}
|