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,
},
};
}
} |