Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 | 9x 9x 9x 9x 9x 385x 494x 206x 206x 206x 206x 314x 314x 314x 9x 879x 768x 768x | import Constants from "../../constants"; import { default as CardOperationModel } from "../models/cardOperation.model"; import { default as StandardTransferModel } from "../models/standardTransfer.model"; import { default as TransactionModel } from "../models/transaction.model"; import TransactionType from "../enums/transactionType"; import TransactionFactory from "../factories/transactionFactory"; import CardOperation from "../types/cardOperation"; import PaymentDetails from "../types/paymentDetails"; import StandardTransfer from "../types/standardTransfer"; import Transaction from "../types/transaction"; import TransactionData from "../types/transactionData"; import { EntryTypeExtensions } from "./entryTypeExtensions"; import { TransactionTypeExtensions } from "./transactionTypeExtensions"; export class TransactionExtensions { public static toRecord(transaction: Transaction<PaymentDetails>) { return { id: transaction.id, date: transaction.date.toISOString(), reference: transaction.reference, value_date: transaction.valueDate.toISOString(), sum: transaction.sum, entry_type: EntryTypeExtensions.toString(transaction.entryType), type: TransactionTypeExtensions.toString(transaction.type), ...TransactionTypeExtensions.isCardOperation(transaction.type) && { card_operation: transaction.paymentDetails }, ...(TransactionExtensions.isStandardTransfer(transaction.type)) && { standard_transfer: TransactionExtensions.toStandardTransferEntity(transaction.paymentDetails as StandardTransfer) }, }; } public static toResponse(transaction: Transaction<PaymentDetails>) { return { id: transaction.id, date: transaction.date.toISOString(), reference: transaction.reference, value_date: transaction.valueDate.toISOString(), sum: Number(transaction.sum), entry_type: EntryTypeExtensions.toString(transaction.entryType), type: TransactionTypeExtensions.toString(transaction.type), ...TransactionTypeExtensions.isCardOperation(transaction.type) && { card_operation: transaction.paymentDetails }, ...(TransactionExtensions.isStandardTransfer(transaction.type)) && { standard_transfer: TransactionExtensions.toStandardTransferEntity(transaction.paymentDetails as StandardTransfer) }, }; } public static trimEntity(entity: TransactionModel) { const { date, value_date, ...rest }: { date: Date, value_date: Date } = entity.dataValues; const utcDate = date.toISOString(); const utcValueDate = value_date.toISOString(); return { date: utcDate, value_date: utcValueDate, ...rest }; } public static toModel(transaction: Record<string, string | number | object>) { const transactionData: TransactionData = { date: new Date(String(transaction.date)), reference: String(transaction.reference), valueDate: new Date(String(transaction.value_date)), sum: String(transaction.sum), entryType: EntryTypeExtensions.toOrdinalEnum(String(transaction.entry_type)), transactionType: TransactionTypeExtensions.toOrdinalEnum(String(transaction.type)), paymentDetailsRaw: [''], additionalDetailsRaw: [''] } const paymentDetails: PaymentDetails = transaction.card_operation !== undefined && transaction.card_operation !== null ? { recipient: (transaction.card_operation as CardOperationModel).recipient, instrument: (transaction.card_operation as CardOperationModel).instrument ?? undefined, sum: (transaction.card_operation as CardOperationModel).sum ? String((transaction.card_operation as CardOperationModel).sum) : undefined, currency: (transaction.card_operation as CardOperationModel).currency ?? undefined } as CardOperation : transaction.standard_transfer !== undefined && transaction.standard_transfer !== null ? { recipient: (transaction.standard_transfer as StandardTransferModel).recipient, recipientIban: (transaction.standard_transfer as StandardTransferModel).recipient_iban ?? undefined, description: (transaction.standard_transfer as StandardTransferModel).description ?? undefined, } as StandardTransfer : Constants.defaultPaymentDetails; return TransactionFactory.create(String(transaction.id), transactionData, paymentDetails); } private static isStandardTransfer = (transactionType: TransactionType) => TransactionTypeExtensions.isCrossBorderTransfer(transactionType) || TransactionTypeExtensions.isCrossBorderTransferFee(transactionType) || TransactionTypeExtensions.isDeskWithdrawal(transactionType) || TransactionTypeExtensions.isStandardFee(transactionType) || TransactionTypeExtensions.isStandardTransfer(transactionType); private static toStandardTransferEntity(standardTransfer: StandardTransfer) { const { recipientIban, ...rest } = standardTransfer; return { ...rest, ...(recipientIban !== undefined) && { recipient_iban: recipientIban, }, }; } } |