5d9b9756cf
- Aggiunto campo MappedDestinationField al modello KeyAssociation per tracciare il campo destinazione mappato alla chiave sorgente
- Creata migration AddMappedDestinationFieldToKeyAssociation per aggiungere la colonna al database
- Implementata logica di popolamento in CreateAssociationAsync e StartDataTransferOriginal per salvare il campo destinazione mappato
- Aggiornato SaveAssociationParallelAsync per includere MappedDestinationField nelle query SQL UPDATE e INSERT
- Corretti indici parametri nella query UPDATE (da {7-9} a {8-10}) per includere il nuovo campo
- Aggiunta visualizzazione campo nell'interfaccia KeyAssociations (tabella, dettagli, export CSV)
- Implementato controllo validazione per impedire trasferimenti se il campo chiave non è mappato
- Aggiunto logging diagnostico dettagliato per debug del mapping dei campi
- Aggiornato ScheduledProfileExecutionService per popolare MappedDestinationField nelle esecuzioni schedulate
- Rimosso file BackgroundServices.cs obsoleto
- Documentazione completa creata (4 markdown files)
Fixes: Campo MappedDestinationField rimaneva NULL perché le query SQL raw non includevano il nuovo campo
5.4 KiB
5.4 KiB
Aggiornamento Pagina KeyAssociations - Campo MappedDestinationField
Data: 20 Ottobre 2025
Modifiche Implementate
1. Aggiornamento Header Tabella
Aggiunta nuova colonna "Campo Mappato" nell'header della tabella:
<th>Campo Sorgente</th>
<th>Campo Destinazione</th>
<th>Campo Mappato</th> <!-- NUOVO -->
<th>Entità Destinazione</th>
2. Visualizzazione nella Tabella
Aggiunta cella per visualizzare il campo mappato con badge colorato:
<td>
@if (!string.IsNullOrEmpty(association.MappedDestinationField))
{
<span class="badge bg-primary">@association.MappedDestinationField</span>
}
else
{
<span class="text-muted">
<i class="fas fa-minus"></i> N/A
</span>
}
</td>
Caratteristiche:
- Badge blu (
bg-primary) per i campi mappati presenti - Icona e testo "N/A" in grigio per campi non mappati (retrocompatibilità)
- Gestione nullable del campo
3. Popup Dettagli Associazione
Aggiunto il campo nel popup di dettagli (metodo ShowAssociationDetails):
info += $"Campo Destinazione: {association.DestinationKeyField}\n";
if (!string.IsNullOrEmpty(association.MappedDestinationField))
info += $"Campo Mappato: {association.MappedDestinationField}\n";
info += $"Entità: {association.DestinationEntity}\n";
Caratteristiche:
- Mostrato solo se presente (non mostra riga se null)
- Posizionato logicamente dopo "Campo Destinazione"
- Include anche l'hash dei dati se presente
4. Esportazione CSV
Aggiornata l'esportazione CSV per includere il nuovo campo:
Header CSV:
Valore Chiave,Campo Sorgente,Campo Destinazione,Campo Mappato,Entità Destinazione,...
Dati:
csv += $"\"{association.MappedDestinationField ?? ""}\",";
Caratteristiche:
- Colonna aggiunta tra "Campo Destinazione" e "Entità Destinazione"
- Gestisce valori null con stringa vuota
- Include anche l'hash dei dati nell'export
Esempio Visivo
Tabella Prima delle Modifiche
| Valore Chiave | Campo Sorgente | Campo Destinazione | Entità | ID Destinazione |
|---|---|---|---|---|
| C00001 | CardCode | Id | Account | 001xx... |
Tabella Dopo le Modifiche
| Valore Chiave | Campo Sorgente | Campo Destinazione | Campo Mappato | Entità | ID Destinazione |
|---|---|---|---|---|---|
| C00001 | CardCode | Id | cardcode__c | Account | 001xx... |
Legenda dei Campi
Per chiarezza, ecco cosa rappresenta ogni campo:
| Campo | Descrizione | Esempio |
|---|---|---|
| Campo Sorgente | Nome del campo chiave nel sistema sorgente | CardCode |
| Campo Destinazione | Nome del campo ID primario nella destinazione | Id |
| Campo Mappato | Nome del campo custom destinazione mappato alla chiave sorgente | cardcode__c |
| Entità Destinazione | Tipo di oggetto nella destinazione | Account |
| ID Destinazione | Valore dell'ID del record creato | 001xx000003DGb2AAG |
Retrocompatibilità
Le modifiche sono completamente retrocompatibili:
- ✅ Record esistenti senza
MappedDestinationFieldmostrano "N/A" - ✅ L'esportazione CSV funziona anche con valori null
- ✅ Il popup dettagli omette la riga se il campo è null
- ✅ Nessuna modifica breaking ai componenti esistenti
Testing
Per verificare le modifiche:
- Avviare l'applicazione
- Navigare a:
/key-associations - Verificare:
- La nuova colonna "Campo Mappato" è visibile nell'header
- I record esistenti mostrano "N/A" se il campo è null
- I nuovi record mostrano il campo mappato con badge blu
- Il popup dettagli include "Campo Mappato" se presente
- L'esportazione CSV include la nuova colonna
Screenshot Esempio
Visualizzazione Tabella
╔═══════════╦════════════════╦═══════════════════╦════════════════╦═════════╗
║ Chiave ║ Campo Sorgente ║ Campo Destinazione║ Campo Mappato ║ Entità ║
╠═══════════╬════════════════╬═══════════════════╬════════════════╬═════════╣
║ C00001 ║ CardCode ║ Id ║ cardcode__c ║ Account ║
║ ║ ║ ║ [Badge Blu] ║ ║
╠═══════════╬════════════════╬═══════════════════╬════════════════╬═════════╣
║ ITEM001 ║ ItemCode ║ Id ║ - N/A ║ Product ║
║ ║ ║ ║ [Grigio] ║ ║
╚═══════════╩════════════════╩═══════════════════╩════════════════╩═════════╝
File Modificati
- ✅
Data_Coupler/Pages/KeyAssociations.razor- Aggiornamento tabella, dettagli ed export
Status: ✅ COMPLETATO
Tutte le modifiche sono state implementate e verificate senza errori di compilazione.