Files
Data-Coupler/KEYASSOCIATIONS_PAGE_UPDATE.md
Alessio 5d9b9756cf fix: Correzione salvataggio campo MappedDestinationField in KeyAssociations
- 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
2025-10-20 00:42:07 +02:00

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 MappedDestinationField mostrano "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:

  1. Avviare l'applicazione
  2. Navigare a: /key-associations
  3. 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.