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
+19 -17
View File
@@ -997,6 +997,25 @@
<i class="fas fa-list"></i> Riepilogo Mapping
</button>
}
</div>
<!-- Sezione Salvataggio Profilo -->
<div>
<ProfileSaver CanSave="@CanSaveProfile()"
SourceType="@selectedSourceType"
SourceCredentialId="@(GetCurrentSourceCredentialIdAsync().Result)"
SourceCredentialName="@selectedDatabaseCredential"
SourceSchema="@GetCurrentDatabaseSchema()"
SourceTable="@(useCustomQuery ? "custom_query" : selectedTable)"
SourceFilePath="@selectedFileName"
DestinationType="rest"
DestinationCredentialId="@(GetCurrentDestinationCredentialIdAsync().Result)"
DestinationCredentialName="@selectedRestCredential"
DestinationEndpoint="@selectedRestEntity?.Name"
FieldMappings="@GetCurrentFieldMappings()"
SourceKeyField="@sourceKeyField"
UseRecordAssociations="@useRecordAssociations"
OnProfileSaved="@OnProfileSaved" />
</div> <div class="text-muted">
@if (fieldMappings.Any())
{
@@ -1124,23 +1143,6 @@
}
</div>
<!-- Sezione Salvataggio Profilo -->
@if (isDatabaseConnected && isRestConnected && fieldMappings.Any())
{
<div class="row mt-4">
<div class="col-12">
<ProfileSaver CanSave="CanSaveProfile()"
SourceType="selectedSourceType"
SourceSchema="@(availableTableNames.FirstOrDefault()?.Split('.').FirstOrDefault())"
SourceTable="selectedTable"
DestinationType="rest"
DestinationEndpoint="@(selectedRestEntity?.Name)"
FieldMappings="GetCurrentFieldMappings()"
OnProfileSaved="OnProfileSaved" />
</div>
</div>
}
<!-- Componente Gestione Profili -->
<ProfileManagement ShowModal="showProfileManagement"
Profiles="availableProfiles"