zater-verhoeff
Version:
Module for create account zater
138 lines (120 loc) • 14 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
class CurrentAccount {
constructor(DigitalData, Verhoeff) {
this.DigitalData = DigitalData;
this.Verhoeff = Verhoeff;
}
generated() {
const x = Math.floor(1000 + Math.random() * 90000000);
return "" + x.toString() + "";
}
findExist(numberAccount) {
const query = { where: {} };
query.where.type = 'currentAccount';
try {
return Promise.resolve(this.DigitalData.find(query)).then(res => {
if (res.length > 0) {
const filterAccount = res.filter(item => item.data.numberAccount === numberAccount);
if (filterAccount > 0) return true;
}
return false;
}).then(x => x).catch(err => {
throw err;
});
} catch (e) {
const err = new Error(e);
err.statusCode = 500;
err.code = 500;
return Promise.reject(e);
}
}
create(user_id) {
var _this = this;
return _asyncToGenerator(function* () {
let numberAccount = 0;
let numGen = true;
try {
let i = 0;
while (numGen === true) {
i++;
numberAccount = _this.generated();
numGen = yield _this.findExist(numberAccount).then(function (res) {
return res;
});
};
const verify = _this.Verhoeff(numberAccount).generate();
const digitalData = {};
digitalData.type = 'currentAccount';
digitalData.origin = 'btcBanco';
digitalData.user_id = user_id;
digitalData.data = {};
digitalData.data.agency = '0001';
digitalData.data.numberAccount = numberAccount;
digitalData.data.verify = verify;
digitalData.data.numberString = `${numberAccount}-${verify}`;
return Promise.resolve(_this.DigitalData.create(digitalData)).catch(function (err) {
throw err;
});
} catch (e) {
const err = new Error(e);
err.statusCode = 400;
err.code = 400;
return Promise.reject(err);
}
})();
}
validateCC(ccString) {
if (ccString.length != 9) {
const err = new Error('Número de conta inválido');
err.code = 400;
err.statusCode = 400;
err.stack = "[zater-verhoeff] number invalid";
return err;
}
if (!ccString.match(/[^$,.\d]/)) {
const err = new Error('Dígito verificador é obrigatorio!');
err.code = 400;
err.statusCode = 400;
err.stack = "[zater-verhoeff] verhoff invalid";
return err;
}
const ccArray = ccString.split('-');
if (isNaN(ccArray[1])) {
const err = new Error('Dígito invalido!');
err.code = 400;
err.statusCode = 400;
err.stack = "[zater-verhoeff] verhoff invalid";
return err;
}
if (this.Verhoeff(ccArray[0]).generate() === ccArray[1]) {
return true;
} else {
return false;
}
}
getByuser(userId) {
const query = { where: {} };
query.where.type = 'currentAccount';
query.where.user_id = userId;
try {
const resolve = res => {
if (!res || res.data === undefined) return { numberAccount: "Não encontrada", numberString: "Não encontrada" };
return res.data;
};
return Promise.resolve(this.DigitalData.findOne(query)).then(res => resolve(res)).catch(err => {
throw err;
});
} catch (e) {
const err = new Error(e);
err.statusCode = 500;
err.code = 500;
return Promise.reject(e);
}
}
}
exports.default = (DigitalData, Verhoeff) => new CurrentAccount(DigitalData, Verhoeff);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9DdXJyZW50QWNjb3VudC5qcyJdLCJuYW1lcyI6WyJDdXJyZW50QWNjb3VudCIsImNvbnN0cnVjdG9yIiwiRGlnaXRhbERhdGEiLCJWZXJob2VmZiIsImdlbmVyYXRlZCIsIngiLCJNYXRoIiwiZmxvb3IiLCJyYW5kb20iLCJ0b1N0cmluZyIsImZpbmRFeGlzdCIsIm51bWJlckFjY291bnQiLCJxdWVyeSIsIndoZXJlIiwidHlwZSIsIlByb21pc2UiLCJyZXNvbHZlIiwiZmluZCIsInRoZW4iLCJyZXMiLCJsZW5ndGgiLCJmaWx0ZXJBY2NvdW50IiwiZmlsdGVyIiwiaXRlbSIsImRhdGEiLCJjYXRjaCIsImVyciIsImUiLCJFcnJvciIsInN0YXR1c0NvZGUiLCJjb2RlIiwicmVqZWN0IiwiY3JlYXRlIiwidXNlcl9pZCIsIm51bUdlbiIsImkiLCJ2ZXJpZnkiLCJnZW5lcmF0ZSIsImRpZ2l0YWxEYXRhIiwib3JpZ2luIiwiYWdlbmN5IiwibnVtYmVyU3RyaW5nIiwidmFsaWRhdGVDQyIsImNjU3RyaW5nIiwic3RhY2siLCJtYXRjaCIsImNjQXJyYXkiLCJzcGxpdCIsImlzTmFOIiwiZ2V0Qnl1c2VyIiwidXNlcklkIiwidW5kZWZpbmVkIiwiZmluZE9uZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxNQUFNQSxjQUFOLENBQXFCO0FBQ3BCQyxhQUFZQyxXQUFaLEVBQXlCQyxRQUF6QixFQUFtQztBQUNsQyxPQUFLRCxXQUFMLEdBQW1CQSxXQUFuQjtBQUNBLE9BQUtDLFFBQUwsR0FBZ0JBLFFBQWhCO0FBQ0E7O0FBRURDLGFBQVk7QUFDWCxRQUFNQyxJQUFLQyxLQUFLQyxLQUFMLENBQVcsT0FBT0QsS0FBS0UsTUFBTCxLQUFnQixRQUFsQyxDQUFYO0FBQ0EsU0FBTyxLQUFHSCxFQUFFSSxRQUFGLEVBQUgsR0FBZ0IsRUFBdkI7QUFDQTs7QUFFREMsV0FBVUMsYUFBVixFQUF3QjtBQUN2QixRQUFNQyxRQUFRLEVBQUNDLE9BQU8sRUFB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QkFBaEQsRUFBUjtBQUNELFdBQU90QixJQUFJSyxJQUFYO0FBQ0EsSUFKRDtBQUtBLFVBQU9ULFFBQVFDLE9BQVIsQ0FBZ0IsS0FBS2QsV0FBTCxDQUFpQmtELE9BQWpCLENBQXlCeEMsS0FBekIsQ0FBaEIsRUFDTE0sSUFESyxDQUNBQyxPQUFPSCxRQUFRRyxHQUFSLENBRFAsRUFFTE0sS0FGSyxDQUVDQyxPQUFPO0FBQUMsVUFBTUEsR0FBTjtBQUFVLElBRm5CLENBQVA7QUFHQSxHQVRELENBU0UsT0FBT0MsQ0FBUCxFQUFVO0FBQ1gsU0FBTUQsTUFBTSxJQUFJRSxLQUFKLENBQVVELENBQVYsQ0FBWjtBQUNBRCxPQUFJRyxVQUFKLEdBQWlCLEdBQWpCO0FBQ0FILE9BQUlJLElBQUosR0FBVyxHQUFYO0FBQ0EsVUFBT2YsUUFBUWdCLE1BQVIsQ0FBZUosQ0FBZixDQUFQO0FBQ0E7QUFDRDtBQTFIbUI7O2tCQTZITixDQUFDekIsV0FBRCxFQUFjQyxRQUFkLEtBQTJCLElBQUlILGNBQUosQ0FBbUJFLFdBQW5CLEVBQWdDQyxRQUFoQyxDIiwiZmlsZSI6IkN1cnJlbnRBY2NvdW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgQ3VycmVudEFjY291bnQge1xuXHRjb25zdHJ1Y3RvcihEaWdpdGFsRGF0YSwgVmVyaG9lZmYpIHtcblx0XHR0aGlzLkRpZ2l0YWxEYXRhID0gRGlnaXRhbERhdGE7XG5cdFx0dGhpcy5WZXJob2VmZiA9IFZlcmhvZWZmO1xuXHR9XG5cblx0Z2VuZXJhdGVkKCkge1xuXHRcdGNvbnN0IHggPSAgTWF0aC5mbG9vcigxMDAwICsgTWF0aC5yYW5kb20oKSAqIDkwMDAwMDAwKTtcblx0XHRyZXR1cm4gXCJcIit4LnRvU3RyaW5nKCkrXCJcIjtcblx0fVxuXG5cdGZpbmRFeGlzdChudW1iZXJBY2NvdW50KXtcblx0XHRjb25zdCBxdWVyeSA9IHt3aGVyZToge319O1xuXHRcdHF1ZXJ5LndoZXJlLnR5cGUgPSAnY3VycmVudEFjY291bnQnO1xuXHRcdHRyeSB7XG5cblx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5EaWdpdGFsRGF0YS5maW5kKHF1ZXJ5KSlcblx0XHRcdFx0LnRoZW4ocmVzID0+IHtcblx0XHRcdFx0XHRpZihyZXMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdFx0Y29uc3QgZmlsdGVyQWNjb3VudCA9IHJlcy5maWx0ZXIoaXRlbSA9PiBpdGVtLmRhdGEubnVtYmVyQWNjb3VudCA9PT0gbnVtYmVyQWNjb3VudCk7XG5cdFx0XHRcdFx0XHRpZiAoZmlsdGVyQWNjb3VudCA+IDApXG5cdFx0XHRcdFx0XHRcdHJldHVybiB0cnVlXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fSlcblx0XHRcdFx0LnRoZW4oeCA9PiB4KVxuXHRcdFx0XHQuY2F0Y2goZXJyID0+IHt0aHJvdyBlcnJ9KTtcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRjb25zdCBlcnIgPSBuZXcgRXJyb3IoZSk7XG5cdFx0XHRlcnIuc3RhdHVzQ29kZSA9IDUwMDtcblx0XHRcdGVyci5jb2RlID0gNTAwO1xuXHRcdFx0cmV0dXJuIFByb21pc2UucmVqZWN0KGUpXG5cdFx0fVxuXHR9XG5cblx0YXN5bmMgY3JlYXRlKHVzZXJfaWQpIHtcblx0XHRsZXQgbnVtYmVyQWNjb3VudCA9IDA7XG5cdFx0bGV0IG51bUdlbiA9IHRydWU7XG5cblx0XHR0cnkge1xuXG5cdFx0XHRsZXQgaSA9IDA7XG5cdFx0XHR3aGlsZShudW1HZW4gPT09IHRydWUpIHtcblx0XHRcdFx0aSsrO1xuXHRcdFx0XHRudW1iZXJBY2NvdW50ID0gdGhpcy5nZW5lcmF0ZWQoKTtcblx0XHRcdFx0bnVtR2VuID0gYXdhaXQgdGhpcy5maW5kRXhpc3QobnVtYmVyQWNjb3VudCkudGhlbihyZXMgPT4gcmVzKTtcblx0XHRcdH07XG5cblx0XHRcdGNvbnN0IHZlcmlmeSA9IHRoaXMuVmVyaG9lZmYobnVtYmVyQWNjb3VudCkuZ2VuZXJhdGUoKTtcblxuXHRcdFx0Y29uc3QgZGlnaXRhbERhdGEgPSB7fTtcblx0XHRcdGRpZ2l0YWxEYXRhLnR5cGUgPSAnY3VycmVudEFjY291bnQnO1xuXHRcdFx0ZGlnaXRhbERhdGEub3JpZ2luID0gJ2J0Y0JhbmNvJztcblx0XHRcdGRpZ2l0YWxEYXRhLnVzZXJfaWQgPSB1c2VyX2lkO1xuXHRcdFx0ZGlnaXRhbERhdGEuZGF0YSA9IHt9O1xuXHRcdFx0ZGlnaXRhbERhdGEuZGF0YS5hZ2VuY3kgPSAnMDAwMSc7XG5cdFx0XHRkaWdpdGFsRGF0YS5kYXRhLm51bWJlckFjY291bnQgPSBudW1iZXJBY2NvdW50O1xuXHRcdFx0ZGlnaXRhbERhdGEuZGF0YS52ZXJpZnkgPSB2ZXJpZnk7XG5cdFx0XHRkaWdpdGFsRGF0YS5kYXRhLm51bWJlclN0cmluZyA9IGAke251bWJlckFjY291bnR9LSR7dmVyaWZ5fWA7XG5cblxuXHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLkRpZ2l0YWxEYXRhLmNyZWF0ZShkaWdpdGFsRGF0YSkpLmNhdGNoKGVyciA9PiB7dGhyb3cgZXJyfSk7XG5cblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRjb25zdCBlcnIgPSBuZXcgRXJyb3IoZSk7XG5cdFx0XHRlcnIuc3RhdHVzQ29kZSA9IDQwMDtcblx0XHRcdGVyci5jb2RlID0gNDAwO1xuXHRcdFx0cmV0dXJuIFByb21pc2UucmVqZWN0KGVycik7XG5cdFx0fVxuXHR9XG5cblx0dmFsaWRhdGVDQyhjY1N0cmluZykge1xuXHRcdGlmIChjY1N0cmluZy5sZW5ndGggIT0gOSkge1xuXHRcdFx0Y29uc3QgZXJyID0gbmV3IEVycm9yKCdOw7ptZXJvIGRlIGNvbnRhIGludsOhbGlkbycpO1xuXHRcdFx0ZXJyLmNvZGUgPSA0MDA7XG5cdFx0XHRlcnIuc3RhdHVzQ29kZSA9IDQwMDtcblx0XHRcdGVyci5zdGFjayA9IFwiW3phdGVyLXZlcmhvZWZmXSBudW1iZXIgaW52YWxpZFwiO1xuXHRcdFx0cmV0dXJuIGVycjtcblx0XHR9XG5cdFx0aWYgKCFjY1N0cmluZy5tYXRjaCgvW14kLC5cXGRdLykpIHtcblx0XHRcdGNvbnN0IGVyciA9IG5ldyBFcnJvcignRMOtZ2l0byB2ZXJpZmljYWRvciDDqSBvYnJpZ2F0b3JpbyEnKTtcblx0XHRcdGVyci5jb2RlID0gNDAwO1xuXHRcdFx0ZXJyLnN0YXR1c0NvZGUgPSA0MDA7XG5cdFx0XHRlcnIuc3RhY2sgPSBcIlt6YXRlci12ZXJob2VmZl0gdmVyaG9mZiBpbnZhbGlkXCI7XG5cdFx0XHRyZXR1cm4gZXJyO1xuXHRcdH1cblx0XHRjb25zdCBjY0FycmF5ID0gY2NTdHJpbmcuc3BsaXQoJy0nKTtcblxuXHRcdGlmIChpc05hTihjY0FycmF5WzFdKSkge1xuXHRcdFx0Y29uc3QgZXJyID0gbmV3IEVycm9yKCdEw61naXRvIGludmFsaWRvIScpO1xuXHRcdFx0ZXJyLmNvZGUgPSA0MDA7XG5cdFx0XHRlcnIuc3RhdHVzQ29kZSA9IDQwMDtcblx0XHRcdGVyci5zdGFjayA9IFwiW3phdGVyLXZlcmhvZWZmXSB2ZXJob2ZmIGludmFsaWRcIjtcblx0XHRcdHJldHVybiBlcnI7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuVmVyaG9lZmYoY2NBcnJheVswXSkuZ2VuZXJhdGUoKSA9PT0gY2NBcnJheVsxXSkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblxuXHRnZXRCeXVzZXIodXNlcklkKXtcblx0XHRjb25zdCBxdWVyeSA9IHt3aGVyZToge319O1xuXHRcdHF1ZXJ5LndoZXJlLnR5cGUgPSAnY3VycmVudEFjY291bnQnO1xuXHRcdHF1ZXJ5LndoZXJlLnVzZXJfaWQgPSB1c2VySWQ7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IHJlc29sdmUgPSAocmVzKSA9PiB7XG5cdFx0XHRcdGlmKCFyZXMgfHwgcmVzLmRhdGEgPT09IHVuZGVmaW5lZClcblx0XHRcdFx0XHRyZXR1cm4gKHtudW1iZXJBY2NvdW50OiBcIk7Do28gZW5jb250cmFkYVwiLCBudW1iZXJTdHJpbmc6IFwiTsOjbyBlbmNvbnRyYWRhXCJ9KTtcblx0XHRcdFx0cmV0dXJuIHJlcy5kYXRhO1xuXHRcdFx0fTtcblx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5EaWdpdGFsRGF0YS5maW5kT25lKHF1ZXJ5KSlcblx0XHRcdFx0LnRoZW4ocmVzID0+IHJlc29sdmUocmVzKSlcblx0XHRcdFx0LmNhdGNoKGVyciA9PiB7dGhyb3cgZXJyfSk7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0Y29uc3QgZXJyID0gbmV3IEVycm9yKGUpO1xuXHRcdFx0ZXJyLnN0YXR1c0NvZGUgPSA1MDA7XG5cdFx0XHRlcnIuY29kZSA9IDUwMDtcblx0XHRcdHJldHVybiBQcm9taXNlLnJlamVjdChlKVxuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCAoRGlnaXRhbERhdGEsIFZlcmhvZWZmKSA9PiBuZXcgQ3VycmVudEFjY291bnQoRGlnaXRhbERhdGEsIFZlcmhvZWZmKTtcbiJdfQ==