fio-api-handler
Version:
Unofficial handler for Fio Bank API
135 lines (106 loc) • 3.4 kB
JavaScript
'use strict';
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
var _defineProperty = _interopDefault(require('@babel/runtime/helpers/defineProperty'));
var luxon = require('luxon');
const PLATBA_KARTOU = 'Platba kartou';
class Transaction {
// eslint-disable-next-line complexity,sonarjs/cognitive-complexity
constructor(source) {
_defineProperty(this, "data", void 0);
_defineProperty(this, "source", void 0);
this.source = source;
const comment = source.column25 ? source.column25.value : null;
const type = source.column8.value;
const issueDate = luxon.DateTime.fromFormat(source.column0.value, 'yyyy-MM-ddZZZ');
const createdDate = type === PLATBA_KARTOU && comment ? luxon.DateTime.fromFormat(comment.split(/dne (\d*\.\d*\.\d{4})/g)[1], 'd.M.yyyy') : issueDate;
const amount = source.column1.value;
const currency = source.column14.value;
const message = source.column16 ? source.column16.value : null;
this.data = {
issueDate,
createdDate,
type,
comment,
transactionId: source.column22.value,
approvalId: source.column17.value,
amount,
originalAmount: amount,
currency,
originalCurrency: currency,
message,
vs: source.column5 ? source.column5.value : null,
ks: source.column4 ? source.column4.value : null,
ss: source.column6 ? source.column6.value : null,
info: source.column7 ? source.column7.value : null,
author: source.column9 ? source.column9.value : null,
sendToAccountNumber: source.column2 ? source.column2.value : null,
sendToAccountName: source.column10 ? source.column10.value : null,
sendToBankCode: source.column3 ? source.column3.value : null,
sendToBank: source.column12 ? source.column12.value : null
};
if (type === PLATBA_KARTOU && message) {
const [// eslint-disable-next-line no-unused-vars
text, originalAmount, originalCurrency] = message.match(/částka {2}(\d*\.\d{2}) (([a-zA-Z]|\u010D){2,3})/);
this.data.originalAmount = Number(originalAmount) * (amount / Math.abs(amount));
this.data.originalCurrency = originalCurrency === 'Kč' ? 'CZK' : originalCurrency;
}
}
getIssueDate() {
return this.data.issueDate;
}
getCreatedDate() {
return this.data.createdDate;
}
getTransactionId() {
return this.data.transactionId;
}
getApprovalId() {
return this.data.approvalId;
}
getAmount() {
return this.data.amount;
}
getCurrency() {
return this.data.currency;
}
getOriginalAmount() {
return this.data.originalAmount;
}
getOriginalCurrency() {
return this.data.originalCurrency;
}
getCounterpartyAccountNumber() {
return this.data.sendToAccountNumber;
}
getCounterpartyAccountName() {
return this.data.sendToAccountName;
}
getCounterpartyBankName() {
return this.data.sendToBank;
}
getCounterpartyBankNumber() {
return this.data.sendToBankCode;
}
getVs() {
return this.data.vs;
}
getKs() {
return this.data.ks;
}
getSs() {
return this.data.ss;
}
getInfo() {
return this.data.info;
}
getMessage() {
return this.data.message;
}
getAuthor() {
return this.data.author;
}
getData() {
return this.data;
}
}
module.exports = Transaction;