Closed ncarandini closed 5 years ago
Per la soluzione dell'issue, come prima cosa ho creato il file ErrorsMessages.cs
nel folder Data
e ho revisionato tutto il codice in modo da utilizzare le costanti ivi riportate.
Non appena mi comunicherete i testi da inserire per i quattro casi mancanti, potrò chiudere l'issue.
Al momento imposto: NON_OPERATING_BENEFICIARY: "Utente non abilitato all'operazione richiesta." REGISTRATION_CHECK_FAILED: "Si è verificato un errore: il servizio non è disponibile." UNAVAILABLE_BENEFICIARY: "Si è verificato un errore: il servizio non è disponibile." UNAVAILABLE_WALLET: "Si è verificato un errore in fase di registrazione."
Issue chiusa con il commit 9c867c7
Implementando la soluzione della issue #33 mi sono accorto che la gestione degli errori è frammentata in più parti:
.../aggiornaBeneficiarioBySPID
o\beneficiario
) per i quali mi sono già stati dati i messaggi di errore, peraltro legati alla specifica annualità per la quale l'app viene attualmente creata.flagOperativo
restituito dalla chiamata al servizio/beneficiarioOperativo
).Quindi abbiamo due criticità: 1) Testo che va modificato di anno in anno. 2) Testo contenuto nel codice.
Il punto 1 non preoccupa, poiché in più occasioni (FAQ, Testo HTML relativo all'accettazione della privacy, ecc.) abbiamo deciso che è possibile utilizzare informazioni hard-coded sempreché siano immutabili per l'anno d'uso dell'app, il che corrisponde al fatto che l'app deve necessariamente essere modificata e ripubblicata per ogni nuovo anno di validità del bonus 18App. La soluzione è quella di centralizzare (ove possibile) tutte le info che potrebbero richiedere un aggiornamento di anno in anno nella cartella
Data
, e comunque di documentare in modo esaustivo tutti i punti dell'app che richiedono tale manutenzione annua.Il punto 2 invece è essenziale e si risolve estrapolando tutte le informazioni in un file a parte che ho chiamato
ErrorMessages.cs
e che per quanto detto relativamente al punto precedente ho inserito nella cartellaData
.Ciò ci porta al nocciolo di questa issue, ovvero la necessità di definire i testi degli errori. Per quanto riguarda gli errori di login, la realizzazione della funzionalità ha portato ad identificare i seguenti possibili errori:
Errori generici di chiamata al servizio:
Da notare che è stato inserito anche un errore di frontend relativo alla mancata conversione Json --> DTO (Data Transfer Object) della risposta fornita dal servizio.
Errori relativi all'ErrorCode restituito dalla chiamata al servizio che ne fanno uso:
Per questi errori non è stato creato alcun enumeratore visto che sono già definiti dal valore intero riportato dall'error code.
Errori relativi alle chiamate che fanno uso di un valore booleano per comunicare l'eventuale insuccesso della chiamata
Anche per questo caso, non è stato creato alcun enumeratore visto che vi è un solo possibile caso di insuccesso.
Errori relativi alle operazioni di Registrazione / Login
Sulla scorta di questa casistica, ho provveduto a definire una serie di costanti nel suddetto file
ErroMessages.cs
:Messaggi generici di chiamata al servizio:
Messaggi relativi all'ErrorCode
Messaggi relativi alle chiamate che fanno uso di un valore booleano (escluse quelle relative alle operazioni di Registrazone / Login)
Messaggi relativi alle operazioni di Registrazione / Login
Testi da definire per completare l'issue:
NON_OPERATING_BENEFICIARY
Questa costante di testo viene utilizzata quando la chiamata a
/beneficiarioOperativo
restituiscefalse
e il risultato dell'operazione viene impostato aNonOperatingBeneficiary
.REGISTRATION_CHECK_FAILED
Questa costante di testo viene utilizzata quando la chiamata a
/verificaPeriodoRegistrazioneBeneficiario
restituiscefalse
e il risultato dell'operazione viene impostato aRegistrationCheckFailed
.UNAVAILABLE_BENEFICIARY
Questa costante di testo viene utilizzata quando la chiamata a
/beneficiario
restituisce unbeneficiarioBean
con la proprietàidBeneficiario
pari anull
e il risultato dell'operazione viene impostato aUnavailableBeneficiary
.UNAVAILABLE_WALLET
Questa costante di testo viene utilizzata quando la chiamata a
/borsellino
restituisce unborsellinoBean
pari anull
e il risultato dell'operazione viene impostato aUnavailableWallet
.