UNPKG

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