UNPKG

@central-credit/engine

Version:

Engine to handle the Serasa requests

64 lines 2.23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const models_1 = require("../models"); const rest_1 = require("@loopback/rest"); class RecordBuilder { constructor(record) { this.record = record; } addParameter(paramName, paramValue) { const { params } = this.record; const isValidParameter = params.find(param => param.id === paramName.slice(1)); if (typeof isValidParameter !== 'undefined') { this.parameters = Object.assign(Object.assign({}, this.parameters), { [paramName.slice(1)]: paramValue }); } } getValueParameter(value) { if (value) { if (String(value).charAt(0) === ':') { const paramValue = this.parameters[value.slice(1)]; return paramValue ? paramValue : ''; } return value; } return ''; } getFillSize(size, value) { if (value) { const valueSize = String(value).length; const fillSize = size - valueSize; return fillSize > 0 ? fillSize : 0; } return size; } getValue(record) { const { type } = record; const value = this.getValueParameter(record.value); const size = this.getFillSize(record.size, value); if (value !== '' && type === models_1.RecordFieldType.NUMBER) { return Array(size + 1) .join('0') .concat(String(value)); } return String(value).concat(Array(size + 1).join(' ')); } isValid() { const { fields, size } = this.record; const fieldsSize = fields.reduce((s, field) => { return s + field.size; }, 0); return fieldsSize === size; } build() { if (!this.isValid()) { const { name } = this.record; throw new rest_1.HttpErrors.PreconditionFailed(`[Record ${name}]: Invalid Record Length`); } const fields = this.record.getFields(); return fields.reduce((str, field) => { return str.concat(this.getValue(field)); }, ''); } } exports.RecordBuilder = RecordBuilder; //# sourceMappingURL=record.builder.js.map