@lskjs/billing
Version:
LSK.js module for adding billing in cabinet
211 lines (209 loc) • 9.17 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _Model2 = _interopRequireDefault(require("@lskjs/db/Model"));
var _omit = _interopRequireDefault(require("lodash/omit"));
function 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; }
function _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; }
function _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); }; }
function _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; } }
//
var BillingTransactionModel = /*#__PURE__*/function (_Model) {
(0, _inherits2["default"])(BillingTransactionModel, _Model);
var _super = _createSuper(BillingTransactionModel);
function BillingTransactionModel() {
(0, _classCallCheck2["default"])(this, BillingTransactionModel);
return _super.apply(this, arguments);
}
(0, _createClass2["default"])(BillingTransactionModel, [{
key: "changeStatus",
value: function () {
var _changeStatus = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(newStatus, params) {
var statusChanged, _yield$this$construct, balanceBefore, balanceAfter;
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
this.wasStatus = this.status;
this.status = newStatus;
if (!this.meta) this.meta = {};
this.meta.statusInfo = _objectSpread({
wasStatus: this.wasStatus,
status: this.status,
updatedAt: new Date()
}, params);
this.markModified('meta');
this.markModified('meta.statusInfo');
statusChanged = this.wasStatus !== newStatus;
if (!statusChanged) {
_context.next = 14;
break;
}
_context.next = 10;
return this.constructor.updateBalance(this);
case 10:
_yield$this$construct = _context.sent;
balanceBefore = _yield$this$construct.balanceBefore;
balanceAfter = _yield$this$construct.balanceAfter;
if (balanceBefore !== null && balanceAfter !== null) {
this.meta.statusInfo.balanceBefore = balanceBefore;
this.meta.statusInfo.balanceAfter = balanceAfter;
}
case 14:
this.addEvent(_objectSpread({
type: 'changeStatus'
}, this.meta.statusInfo));
return _context.abrupt("return", this);
case 16:
case "end":
return _context.stop();
}
}, _callee, this);
}));
function changeStatus(_x, _x2) {
return _changeStatus.apply(this, arguments);
}
return changeStatus;
}()
}, {
key: "addEvent",
value: function addEvent() {
var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
if (!this["private"]) this["private"] = {};
if (!this["private"].events) this["private"].events = [];
var event = _objectSpread({
createdAt: params.createdAt || new Date()
}, params);
this["private"].events.push(event);
this.markModified('private.events');
}
}], [{
key: "updateBalance",
value: // Пополнение
// Перевод внутри системы
// Снятие
function () {
var _updateBalance = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
return _regenerator["default"].wrap(function _callee2$(_context2) {
while (1) switch (_context2.prev = _context2.next) {
case 0:
return _context2.abrupt("return", {});
case 1:
case "end":
return _context2.stop();
}
}, _callee2);
}));
function updateBalance() {
return _updateBalance.apply(this, arguments);
}
return updateBalance;
}()
}, {
key: "createPayment",
value: function () {
var _createPayment = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(params) {
var transaction;
return _regenerator["default"].wrap(function _callee3$(_context3) {
while (1) switch (_context3.prev = _context3.next) {
case 0:
transaction = new this(_objectSpread({}, params));
return _context3.abrupt("return", transaction.save());
case 2:
case "end":
return _context3.stop();
}
}, _callee3, this);
}));
function createPayment(_x3) {
return _createPayment.apply(this, arguments);
}
return createPayment;
}()
}, {
key: "prepareOne",
value: function () {
var _prepareOne = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(obj) {
return _regenerator["default"].wrap(function _callee4$(_context4) {
while (1) switch (_context4.prev = _context4.next) {
case 0:
return _context4.abrupt("return", (0, _omit["default"])(obj, ['private']));
case 1:
case "end":
return _context4.stop();
}
}, _callee4);
}));
function prepareOne(_x4) {
return _prepareOne.apply(this, arguments);
}
return prepareOne;
}()
}]);
return BillingTransactionModel;
}(_Model2["default"]);
exports["default"] = BillingTransactionModel;
BillingTransactionModel.schema = {
// intId: { type: Number, required: true },
provider: String,
// bank, g2a, etc.
currency: {
type: String
},
// RUB, USD, BTC, LSKCOIN
amount: {
type: Number,
required: true
},
// в центах
type: {
type: String,
required: true
},
// in, out, internal
status: {
type: String
},
// TRANSACTION_STATUS_* // null, progress, succcess, error
userId: {
type: _Model2["default"].Types.ObjectId,
ref: 'UserModel',
required: true
},
companyId: {
type: _Model2["default"].Types.ObjectId
},
info: {
type: Object
},
// qiwi, usd
meta: {
type: Object
},
// qiwi, usd
"private": {
// new Model.Schema({})
type: Object // Logs
}
};
BillingTransactionModel.options = {
model: 'BillingTransactionModel',
collection: 'billing_transactions'
};
BillingTransactionModel.TYPE_IN = 'in';
BillingTransactionModel.TYPE_BETWEEN = 'internal';
BillingTransactionModel.TYPE_OUT = 'out';
BillingTransactionModel.STATUS_PENDING = 'pending';
BillingTransactionModel.STATUS_FAILURE = 'failure';
BillingTransactionModel.STATUS_SUCCESS = 'success';
//# sourceMappingURL=BillingTransactionModel.js.map