-
Notifications
You must be signed in to change notification settings - Fork 31
Expand file tree
/
Copy pathmovement_info.js
More file actions
105 lines (100 loc) · 3.3 KB
/
movement_info.js
File metadata and controls
105 lines (100 loc) · 3.3 KB
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
'use strict'
const numberValidator = require('./validators/number')
const dateValidator = require('./validators/date')
const amountValidator = require('./validators/amount')
const currencyValidator = require('./validators/currency')
const stringValidator = require('./validators/string')
const objectValidator = require('./validators/object')
const Model = require('./model')
const fields = {
id: 0,
currency: 1,
currencyName: 2,
remark: 4,
mtsStarted: 5,
mtsUpdated: 6,
status: 9,
amount: 12,
fees: 13,
destinationAddress: 16,
memo: 17,
transactionId: 20,
note: 21,
bankFees: 24,
bankRouterId: 25,
externalBankMovId: 28,
externalBankMovStatus: 29,
externalBankMovDescription: 30,
externalBankAccInfo: 31
}
/**
* Currency Movement Info model
*/
class MovementInfo extends Model {
/**
* @param {object|Array} data - movement data
* @param {number} data.id - id
* @param {string} data.currency - currency
* @param {string} data.currencyName - currency name
* @param {string} data.remark - remarks related to movement
* @param {number} data.mtsStarted - movement start timestamp
* @param {number} data.mtsUpdated - last update timestamp
* @param {string} data.status - status
* @param {number} data.amount - moved amount
* @param {number} data.fees - paid fees
* @param {string} data.destinationAddress - destination address
* @param {string} data.memo - memo/tag related to transaction
* @param {string} data.transactionId - transaction ID
* @param {string} data.note - transaction note
* @param {number} data.bankFees - wire bank fees
* @param {number} data.bankRouterId - identifier of bank router
* @param {string} data.externalBankMovId - external provider movement id
* @param {string} data.externalBankMovStatus - external provider movement status
* @param {string} data.externalBankMovDescription - external provider movement info
* @param {object} data.externalBankAccInfo - external provider bank account information for user
*/
constructor (data = {}) {
super({ data, fields })
}
/**
* @param {object[]|object|Array[]|Array} data - data to convert to POJO
* @returns {object} pojo
*/
static unserialize (data) {
return super.unserialize({ data, fields })
}
/**
* Validates a given MovementInfo instance
*
* @param {object[]|object|MovementInfo[]|MovementInfo|Array} data - instance to validate
* @returns {string} error - null if instance is valid
*/
static validate (data) {
return super.validate({
data,
fields,
validators: {
id: numberValidator,
currency: currencyValidator,
currencyName: stringValidator,
remark: stringValidator,
mtsStarted: dateValidator,
mtsUpdated: dateValidator,
status: stringValidator,
amount: amountValidator,
fees: numberValidator,
destinationAddress: stringValidator,
memo: stringValidator,
transactionId: stringValidator,
note: stringValidator,
bankFees: numberValidator,
bankRouterId: numberValidator,
externalBankMovId: stringValidator,
externalBankMovStatus: stringValidator,
externalBankMovDescription: stringValidator,
externalBankAccInfo: objectValidator
}
})
}
}
module.exports = MovementInfo