@central-credit/engine
Version:
Engine to handle the Serasa requests
64 lines • 2.23 kB
JavaScript
;
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