Created
February 2, 2025 13:27
-
-
Save helabenkhalfallah/158e5308453ab775f36fbbf07b6c4ad5 to your computer and use it in GitHub Desktop.
Refactoring Example (2)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const formatVirementsBadWay = (virements) => { | |
let dataSource = []; | |
for (let i = 0; i < virements.length; i++) { | |
const virement = virements[i]; | |
const uiVirement = {}; | |
// Reference interne | |
uiVirement.referenceInterne = virement.referenceInterne; | |
// Format emetteur | |
if (virement.compteEmetteur) { | |
if (virement.compteEmetteur.iban) { | |
uiVirement.emetteurValue = virement.compteEmetteur.iban; | |
} else if (virement.compteEmetteur.rib) { | |
uiVirement.emetteurValue = `${virement.compteEmetteur.rib.codeBanque || ''}`; | |
uiVirement.emetteurValue += `${virement.compteEmetteur.rib.codeGuichet || ''}`; | |
uiVirement.emetteurValue += `${virement.compteEmetteur.rib.numero || ''}`; | |
uiVirement.emetteurValue += `${virement.compteEmetteur.rib.cleRib || ''}`; | |
} | |
uiVirement.emetteurValue += ` - ${virement.compteEmetteur.intitule || ''}`; | |
} | |
// Format montant | |
if (virement.montant && 'valeur' in virement.montant && virement.montant.valeur != null) { | |
const { valeur, valeurReelle, devise, decimales } = virement.montant; | |
const montantDivisor = 10 ** decimales; | |
const montantValeurReelle = `${valeur / montantDivisor}`; | |
let montantValeur = ''; | |
if (`${valeurReelle}`.includes('.') || `${valeurReelle}`.includes(',')) { | |
const normalizedValue = montantValeurReelle.replace('.', ','); | |
const valeurReelleComponents = normalizedValue.split(','); | |
const decimale = valeurReelleComponents[0]; | |
montantValeur = `${normalizedValue}${decimale.length < 2 ? '0' : ''}`; | |
} else { | |
montantValeur = montantValeurReelle.replace('.', '').replace('.', ''); | |
montantValeur = `${montantValeur},00`; | |
} | |
uiVirement.montantValue = montantValeur ? montantValeur : '0'; | |
uiVirement.montantValue += ` ${devise}`; | |
} | |
// Format date | |
if (virement.dateExecution) { | |
const dateT = new Date(virement.dateExecution); | |
const year = dateT.getFullYear(); | |
const month = dateT.getMonth() + 1; | |
const date = dateT.getDate(); | |
uiVirement.dateExecutionValue = date + '/' + month + '/' + year; | |
} | |
// Format état | |
uiVirement.etatLibelleValue = virement.etatLibelle; | |
dataSource.push(uiVirement); | |
} | |
return dataSource; | |
}; | |
// Helper function: Formats Emetteur (Sender) Information | |
const formatEmetteur = (compte) => { | |
if (!compte) return "Unknown Sender"; | |
const accountNumber = compte.iban | |
? compte.iban | |
: `${compte.rib?.codeBanque || ''}${compte.rib?.codeGuichet || ''}${compte.rib?.numero || ''}${compte.rib?.cleRib || ''}`; | |
return `${accountNumber} - ${compte.intitule || ''}`; | |
}; | |
// Helper function: Formats Montant (Amount) | |
const formatMontant = (montant) => { | |
if (!montant || montant.valeur == null) return "0,00 EUR"; | |
const montantDivisor = 10 ** montant.decimales; | |
let montantValeur = (montant.valeur / montantDivisor).toFixed(montant.decimales); | |
return `${montantValeur.replace('.', ',')} ${montant.devise}`; | |
}; | |
// Helper function: Formats Date | |
const formatDate = (timestamp) => { | |
if (!timestamp) return "Invalid Date"; | |
const date = new Date(timestamp); | |
return date.toLocaleDateString('fr-FR'); // Converts to 'DD/MM/YYYY' format | |
}; | |
const formatVirements = (virements) => | |
virements.map((virement) => ({ | |
referenceInterne: virement.referenceInterne, | |
emetteurValue: formatEmetteur(virement.compteEmetteur), | |
montantValue: formatMontant(virement.montant), | |
dateExecutionValue: formatDate(virement.dateExecution), | |
etatLibelleValue: virement.etatLibelle, | |
})); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment