UNPKG

9.17 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4Object.defineProperty(exports, "__esModule", {
5 value: true
6});
7exports["default"] = void 0;
8var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
12var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
14var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
15var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
16var _Model2 = _interopRequireDefault(require("@lskjs/db/Model"));
17var _omit = _interopRequireDefault(require("lodash/omit"));
18function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
19function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
20function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
21function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
22//
23var BillingTransactionModel = /*#__PURE__*/function (_Model) {
24 (0, _inherits2["default"])(BillingTransactionModel, _Model);
25 var _super = _createSuper(BillingTransactionModel);
26 function BillingTransactionModel() {
27 (0, _classCallCheck2["default"])(this, BillingTransactionModel);
28 return _super.apply(this, arguments);
29 }
30 (0, _createClass2["default"])(BillingTransactionModel, [{
31 key: "changeStatus",
32 value: function () {
33 var _changeStatus = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(newStatus, params) {
34 var statusChanged, _yield$this$construct, balanceBefore, balanceAfter;
35 return _regenerator["default"].wrap(function _callee$(_context) {
36 while (1) switch (_context.prev = _context.next) {
37 case 0:
38 this.wasStatus = this.status;
39 this.status = newStatus;
40 if (!this.meta) this.meta = {};
41 this.meta.statusInfo = _objectSpread({
42 wasStatus: this.wasStatus,
43 status: this.status,
44 updatedAt: new Date()
45 }, params);
46 this.markModified('meta');
47 this.markModified('meta.statusInfo');
48 statusChanged = this.wasStatus !== newStatus;
49 if (!statusChanged) {
50 _context.next = 14;
51 break;
52 }
53 _context.next = 10;
54 return this.constructor.updateBalance(this);
55 case 10:
56 _yield$this$construct = _context.sent;
57 balanceBefore = _yield$this$construct.balanceBefore;
58 balanceAfter = _yield$this$construct.balanceAfter;
59 if (balanceBefore !== null && balanceAfter !== null) {
60 this.meta.statusInfo.balanceBefore = balanceBefore;
61 this.meta.statusInfo.balanceAfter = balanceAfter;
62 }
63 case 14:
64 this.addEvent(_objectSpread({
65 type: 'changeStatus'
66 }, this.meta.statusInfo));
67 return _context.abrupt("return", this);
68 case 16:
69 case "end":
70 return _context.stop();
71 }
72 }, _callee, this);
73 }));
74 function changeStatus(_x, _x2) {
75 return _changeStatus.apply(this, arguments);
76 }
77 return changeStatus;
78 }()
79 }, {
80 key: "addEvent",
81 value: function addEvent() {
82 var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
83 if (!this["private"]) this["private"] = {};
84 if (!this["private"].events) this["private"].events = [];
85 var event = _objectSpread({
86 createdAt: params.createdAt || new Date()
87 }, params);
88 this["private"].events.push(event);
89 this.markModified('private.events');
90 }
91 }], [{
92 key: "updateBalance",
93 value: // Пополнение
94 // Перевод внутри системы
95 // Снятие
96 function () {
97 var _updateBalance = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
98 return _regenerator["default"].wrap(function _callee2$(_context2) {
99 while (1) switch (_context2.prev = _context2.next) {
100 case 0:
101 return _context2.abrupt("return", {});
102 case 1:
103 case "end":
104 return _context2.stop();
105 }
106 }, _callee2);
107 }));
108 function updateBalance() {
109 return _updateBalance.apply(this, arguments);
110 }
111 return updateBalance;
112 }()
113 }, {
114 key: "createPayment",
115 value: function () {
116 var _createPayment = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(params) {
117 var transaction;
118 return _regenerator["default"].wrap(function _callee3$(_context3) {
119 while (1) switch (_context3.prev = _context3.next) {
120 case 0:
121 transaction = new this(_objectSpread({}, params));
122 return _context3.abrupt("return", transaction.save());
123 case 2:
124 case "end":
125 return _context3.stop();
126 }
127 }, _callee3, this);
128 }));
129 function createPayment(_x3) {
130 return _createPayment.apply(this, arguments);
131 }
132 return createPayment;
133 }()
134 }, {
135 key: "prepareOne",
136 value: function () {
137 var _prepareOne = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(obj) {
138 return _regenerator["default"].wrap(function _callee4$(_context4) {
139 while (1) switch (_context4.prev = _context4.next) {
140 case 0:
141 return _context4.abrupt("return", (0, _omit["default"])(obj, ['private']));
142 case 1:
143 case "end":
144 return _context4.stop();
145 }
146 }, _callee4);
147 }));
148 function prepareOne(_x4) {
149 return _prepareOne.apply(this, arguments);
150 }
151 return prepareOne;
152 }()
153 }]);
154 return BillingTransactionModel;
155}(_Model2["default"]);
156exports["default"] = BillingTransactionModel;
157BillingTransactionModel.schema = {
158 // intId: { type: Number, required: true },
159 provider: String,
160 // bank, g2a, etc.
161 currency: {
162 type: String
163 },
164 // RUB, USD, BTC, LSKCOIN
165 amount: {
166 type: Number,
167 required: true
168 },
169 // в центах
170 type: {
171 type: String,
172 required: true
173 },
174 // in, out, internal
175
176 status: {
177 type: String
178 },
179 // TRANSACTION_STATUS_* // null, progress, succcess, error
180 userId: {
181 type: _Model2["default"].Types.ObjectId,
182 ref: 'UserModel',
183 required: true
184 },
185 companyId: {
186 type: _Model2["default"].Types.ObjectId
187 },
188 info: {
189 type: Object
190 },
191 // qiwi, usd
192 meta: {
193 type: Object
194 },
195 // qiwi, usd
196 "private": {
197 // new Model.Schema({})
198 type: Object // Logs
199 }
200};
201BillingTransactionModel.options = {
202 model: 'BillingTransactionModel',
203 collection: 'billing_transactions'
204};
205BillingTransactionModel.TYPE_IN = 'in';
206BillingTransactionModel.TYPE_BETWEEN = 'internal';
207BillingTransactionModel.TYPE_OUT = 'out';
208BillingTransactionModel.STATUS_PENDING = 'pending';
209BillingTransactionModel.STATUS_FAILURE = 'failure';
210BillingTransactionModel.STATUS_SUCCESS = 'success';
211//# sourceMappingURL=BillingTransactionModel.js.map
\No newline at end of file