import AVAILABLE_BY_OPTION from '../enum/availableByOption'; import envConfig from '../env/env-config'; import { getNodeProfile } from '../env/nodeProfile'; export function changeAmendmentJson(json: any, changeTable: any, dcScenario?: string): any { const partiesFields = [ 'applicant', 'beneficiary', 'issuer', 'advisingBank', 'confirmingBank', 'availableWithBank', 'drawee' ]; const addressFields = [ 'applicantAddress', 'beneficiaryAddress', 'issuerAddress', 'advisingBankAddress', 'confirmingBankAddress', 'availableWithBankAddress', 'draweeAddress' ]; for (const element of changeTable) { const field = element[0]; const value = element[1]; if (partiesFields.includes(field)) { json.args.props.parties[field] = getNodeProfile(value).name; } else if (addressFields.includes(field)) { json.args.props.partyAddresses[field.replace('Address', '')] = value; } else if (field == 'documentsRequired' || field == 'otherDocumentsRequired') { const val = JSON.parse(value); json.args.props[field] = val; } else if (field == 'typeCredits') { const typeCreditsValue = getTypeCredits(value, dcScenario); json.args.props[field] = typeCreditsValue; } else { json.args.props[field] = value; } } return json; } function getTypeCredits(change: string, dcScenario: string): any { const typeCreditsJson = []; switch (change) { case AVAILABLE_BY_OPTION.PAYMENT_AT_SIGHT: typeCreditsJson.push({ typeCredit: 'SIGHT', availableCreditsProps: {} }); break; case AVAILABLE_BY_OPTION.DEFERRED_PAYMENT: typeCreditsJson.push({ typeCredit: 'DEFERRED_PAYMENT', availableCreditsProps: { deferredPaymentDetails: '123' } }); break; case AVAILABLE_BY_OPTION.ACCEPTANCE: typeCreditsJson.push({ typeCredit: 'ACCEPTANCE', availableCreditsProps: { draftsAt: '123', drawee: getNodeProfile(envConfig.scenario[dcScenario].issuingBank).name, draweeAddress: 'Bank A Address', draweeSWIFTBIC: '', draweeLegalName: getNodeProfile(envConfig.scenario[dcScenario].issuingBank).displayName } }); break; case AVAILABLE_BY_OPTION.NEGOTIATION: typeCreditsJson.push({ typeCredit: 'NEGOTIABLE_CREDIT', availableCreditsProps: { deferredPaymentDetails: '123' } }); break; } return typeCreditsJson; }