feat: Aggiunto sistema completo di gestione profili per Data Coupler

- Creata nuova libreria Components con componenti Blazor riutilizzabili
  * ProfileSelector: dropdown per selezione profili salvati
  * ProfileSaver: componente per salvare configurazioni correnti come profili
  * ProfileManagement: modale per gestione profili salvati
  * ProfileQuickActions: bottoni azioni rapide per operazioni sui profili

- Esteso CredentialManager con entità e servizi per DataCouplerProfile
  * Aggiunto modello DataCouplerProfile con configurazioni mapping e metadati
  * Implementata migrazione Entity Framework per memorizzazione profili
  * Creato DataCouplerProfileService per operazioni CRUD
  * Aggiunto CredentialDbContextFactory per operazioni database design-time

- Migliorato componente principale DataCoupler con integrazione profili
  * Integrata funzionalità caricamento/salvataggio profili
  * Aggiunto selettore profili nella parte superiore dell'interfaccia
  * Mantenuta retrocompatibilità con funzionalità esistenti
  * Migliorata esperienza utente con gestione configurazioni salvate

- Aggiornata struttura progetto e dipendenze
  * Aggiunto progetto Components alla soluzione
  * Aggiornati riferimenti progetti e import
  * Rimosso progetto obsoleto TestDatabaseFix

Questo aggiornamento migliora significativamente il flusso di lavoro permettendo agli utenti di salvare, caricare e gestire configurazioni complete di accoppiamento dati come
This commit is contained in:
2025-07-02 00:00:05 +02:00
parent 1435c013d3
commit 7e450a358b
34 changed files with 2430 additions and 422 deletions
+1
View File
@@ -9,6 +9,7 @@
<ItemGroup>
<ProjectReference Include="..\DataConnection\DataConnection.csproj" />
<ProjectReference Include="..\CredentialManager\CredentialManager.csproj" />
<ProjectReference Include="..\Components\Components.csproj" />
</ItemGroup>
<ItemGroup>
+39 -1
View File
@@ -15,6 +15,7 @@
@inject IDataConnectionFactory ConnectionFactory
@inject IJSRuntime JSRuntime
@inject ILogger<DataCoupler> Logger
@inject CredentialManager.Services.IDataCouplerProfileService ProfileService
<PageTitle>Data Coupler</PageTitle>
@@ -24,7 +25,19 @@
<h3><i class="fas fa-exchange-alt"></i> Data Coupler - Coupling Database e REST API</h3>
<p class="text-muted">Connetti database e servizi REST per il trasferimento dati</p>
</div>
</div> <div class="row">
</div>
<!-- Sezione Gestione Profili -->
<div class="row mb-3">
<div class="col-12">
<ProfileSelector Profiles="availableProfiles"
OnProfileLoaded="OnProfileLoaded"
OnManageProfiles="OnManageProfiles"
IsLoading="isLoadingProfiles" />
</div>
</div>
<div class="row">
<!-- Lato Sinistro - Fonte Dati -->
<div class="col-md-6">
<div class="card h-100">
@@ -1103,6 +1116,31 @@
}
</div>
<!-- Sezione Salvataggio Profilo -->
@if (isDatabaseConnected && isRestConnected && fieldMappings.Any())
{
<div class="row mt-4">
<div class="col-12">
<ProfileSaver CanSave="CanSaveProfile()"
SourceType="selectedSourceType"
SourceSchema="@(databaseTables.Keys.FirstOrDefault()?.Split('.').FirstOrDefault())"
SourceTable="selectedTable"
DestinationType="rest"
DestinationEndpoint="@(selectedRestEntity?.Name)"
FieldMappings="GetCurrentFieldMappings()"
OnProfileSaved="OnProfileSaved" />
</div>
</div>
}
<!-- Componente Gestione Profili -->
<ProfileManagement ShowModal="showProfileManagement"
Profiles="availableProfiles"
OnCloseModal="OnCloseProfileManagement"
OnProfileLoaded="OnProfileLoaded"
OnProfileDeleted="OnProfileDeleted"
IsLoading="isLoadingProfiles" />
<!-- Modal per la selezione del database -->
@if (showDatabaseSelectionModal)
{
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1,5 +1,4 @@
@using System.Net.Http
@using Microsoft.AspNetCore.Authorization
@using Microsoft.AspNetCore.Components.Authorization
@using Microsoft.AspNetCore.Components.Forms
@using Microsoft.AspNetCore.Components.Routing
@@ -8,3 +7,4 @@
@using Microsoft.JSInterop
@using Data_Coupler
@using Data_Coupler.Shared
@using Components
Binary file not shown.
Binary file not shown.
Binary file not shown.