using CredentialManager.Models; namespace CredentialManager.Services; /// /// Interfaccia per il servizio di gestione delle associazioni basate sui valori delle chiavi /// public interface IKeyAssociationService { /// /// Salva una nuova associazione o aggiorna una esistente /// Task SaveAssociationAsync(KeyAssociation association); /// /// Cerca un'associazione esistente tramite valore chiave /// Task FindAssociationByKeyValueAsync(string keyValue, string destinationEntity, string restCredentialName); /// /// Cerca un'associazione esistente tramite valore chiave, indipendentemente dalla destinazione /// Task FindAssociationByKeyValueAsync(string keyValue); /// /// Ottiene tutte le associazioni per un'entità di destinazione specifica /// Task> GetAssociationsByDestinationAsync(string destinationEntity, string restCredentialName); /// /// Ottiene tutte le associazioni attive /// Task> GetAllActiveAssociationsAsync(); /// /// Ottiene tutte le associazioni (attive e non) /// Task> GetAllAssociationsAsync(); /// /// Aggiorna un'associazione esistente /// Task UpdateAssociationAsync(KeyAssociation association); /// /// Disattiva un'associazione /// Task DeactivateAssociationAsync(int id); /// /// Elimina definitivamente un'associazione /// Task DeleteAssociationAsync(int id); /// /// Pulisce le associazioni più vecchie di un determinato periodo /// Task CleanupOldAssociationsAsync(TimeSpan olderThan); /// /// Elimina tutte le associazioni per una specifica combinazione entità-credenziale /// Task ClearAssociationsAsync(string destinationEntity, string restCredentialName); /// /// Elimina tutte le associazioni nel sistema /// Task ClearAllAssociationsAsync(); /// /// Verifica se un ID di destinazione esiste ancora nel sistema target /// Task ValidateDestinationIdAsync(string destinationId, string destinationEntity, string restCredentialName); /// /// Ottiene tutte le associazioni con ID di destinazione non validi /// Task> GetInvalidAssociationsAsync(string destinationEntity, string restCredentialName); /// /// Pulisce le associazioni con ID di destinazione non più validi /// Task CleanupInvalidAssociationsAsync(string destinationEntity, string restCredentialName); /// /// Aggiorna la data di ultima verifica per un'associazione /// Task UpdateLastVerifiedAsync(int id); /// /// Ottiene statistiche sulle associazioni /// Task GetStatisticsAsync(); } /// /// Statistiche sulle associazioni /// public class AssociationStatistics { public int TotalAssociations { get; set; } public int ActiveAssociations { get; set; } public int InactiveAssociations { get; set; } public int UniqueKeyValues { get; set; } public int UniqueDestinationEntities { get; set; } public DateTime? OldestAssociation { get; set; } public DateTime? NewestAssociation { get; set; } public Dictionary AssociationsByEntity { get; set; } = new(); }