@page "/test-associations" @using CredentialManager.Models @using DataConnection.CredentialManagement.Interfaces @inject IDataConnectionCredentialService CredentialService @inject ILogger Logger Test Associazioni

Test Sistema Associazioni Chiave

Crea Associazione Test
Cerca Associazione
@if (!string.IsNullOrEmpty(resultMessage)) {
@resultMessage
} @if (foundAssociation != null) {
Associazione Trovata
ID: @foundAssociation.Id
Valore Chiave: @foundAssociation.KeyValue
Campo Chiave Sorgente: @foundAssociation.SourceKeyField
Campo Chiave Destinazione: @foundAssociation.DestinationKeyField
Entità Destinazione: @foundAssociation.DestinationEntity
ID Destinazione: @foundAssociation.DestinationId
Credenziale REST: @foundAssociation.RestCredentialName
Attiva: @(foundAssociation.IsActive ? "Sì" : "No")
Creata: @foundAssociation.CreatedAt.ToString("dd/MM/yyyy HH:mm:ss")
@if (foundAssociation.UpdatedAt.HasValue) { Aggiornata: @foundAssociation.UpdatedAt.Value.ToString("dd/MM/yyyy HH:mm:ss")
} @if (foundAssociation.LastVerifiedAt.HasValue) { Ultima Verifica: @foundAssociation.LastVerifiedAt.Value.ToString("dd/MM/yyyy HH:mm:ss")
}
}
Tutte le Associazioni Attive
@if (allAssociations != null && allAssociations.Any()) {
@foreach (var assoc in allAssociations) { }
ID Valore Chiave Entità ID Destinazione Credenziale Creata Azioni
@assoc.Id @assoc.KeyValue @assoc.DestinationEntity @assoc.DestinationId @assoc.RestCredentialName @assoc.CreatedAt.ToString("dd/MM/yyyy HH:mm")
} else if (allAssociations != null) {
Nessuna associazione trovata.
}
@code { private string testKeyValue = ""; private string testDestinationEntity = ""; private string testDestinationId = ""; private string testRestCredential = ""; private string searchKeyValue = ""; private string searchDestinationEntity = ""; private string searchRestCredential = ""; private string resultMessage = ""; private string resultType = ""; private KeyAssociation? foundAssociation; private List? allAssociations; private async Task CreateTestAssociation() { try { if (string.IsNullOrEmpty(testKeyValue) || string.IsNullOrEmpty(testDestinationEntity) || string.IsNullOrEmpty(testDestinationId) || string.IsNullOrEmpty(testRestCredential)) { resultMessage = "Tutti i campi sono obbligatori."; resultType = "error"; return; } var association = new KeyAssociation { KeyValue = testKeyValue, SourceKeyField = "test_field", DestinationKeyField = "id", DestinationEntity = testDestinationEntity, DestinationId = testDestinationId, RestCredentialName = testRestCredential, CreatedAt = DateTime.UtcNow, LastVerifiedAt = DateTime.UtcNow, AdditionalInfo = "{\"test\": true}" }; var id = await CredentialService.SaveKeyAssociationAsync(association); resultMessage = $"Associazione creata con successo! ID: {id}"; resultType = "success"; Logger.LogInformation("Associazione test creata: ID={Id}, KeyValue={KeyValue}", id, testKeyValue); } catch (Exception ex) { resultMessage = $"Errore nella creazione: {ex.Message}"; resultType = "error"; Logger.LogError(ex, "Errore nella creazione dell'associazione test"); } } private async Task SearchAssociation() { try { if (string.IsNullOrEmpty(searchKeyValue)) { resultMessage = "Valore chiave obbligatorio per la ricerca."; resultType = "error"; return; } foundAssociation = null; if (!string.IsNullOrEmpty(searchDestinationEntity) && !string.IsNullOrEmpty(searchRestCredential)) { foundAssociation = await CredentialService.FindKeyAssociationByValueAsync( searchKeyValue, searchDestinationEntity, searchRestCredential); } else { foundAssociation = await CredentialService.FindKeyAssociationByValueAsync(searchKeyValue); } if (foundAssociation != null) { resultMessage = "Associazione trovata!"; resultType = "success"; Logger.LogInformation("Associazione trovata: ID={Id} per KeyValue={KeyValue}", foundAssociation.Id, searchKeyValue); } else { resultMessage = "Nessuna associazione trovata con i criteri specificati."; resultType = "info"; Logger.LogInformation("Nessuna associazione trovata per KeyValue={KeyValue}", searchKeyValue); } } catch (Exception ex) { resultMessage = $"Errore nella ricerca: {ex.Message}"; resultType = "error"; Logger.LogError(ex, "Errore nella ricerca dell'associazione"); } } private async Task LoadAllAssociations() { try { allAssociations = await CredentialService.GetAllActiveKeyAssociationsAsync(); resultMessage = $"Caricate {allAssociations.Count} associazioni attive."; resultType = "info"; } catch (Exception ex) { resultMessage = $"Errore nel caricamento: {ex.Message}"; resultType = "error"; Logger.LogError(ex, "Errore nel caricamento delle associazioni"); } } private async Task DeleteAssociation(int id) { try { var result = await CredentialService.DeleteKeyAssociationAsync(id); if (result) { resultMessage = $"Associazione {id} eliminata con successo."; resultType = "success"; await LoadAllAssociations(); // Ricarica la lista } else { resultMessage = $"Errore nell'eliminazione dell'associazione {id}."; resultType = "error"; } } catch (Exception ex) { resultMessage = $"Errore nell'eliminazione: {ex.Message}"; resultType = "error"; Logger.LogError(ex, "Errore nell'eliminazione dell'associazione {Id}", id); } } protected override async Task OnInitializedAsync() { await LoadAllAssociations(); } }