@antbat/base-client-js
Version:
Base JS library for BASE-platform
115 lines • 4.93 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var CompareAction_1 = require("./CompareAction");
var OfferPriceRules = /** @class */ (function () {
function OfferPriceRules(id, rulesKey, value, rule) {
if (id === void 0) { id = 0; }
if (rulesKey === void 0) { rulesKey = ''; }
if (value === void 0) { value = ''; }
if (rule === void 0) { rule = CompareAction_1.CompareAction.EQUALLY; }
this.id = id;
this.rulesKey = rulesKey;
this.value = value;
this.rule = rule;
}
OfferPriceRules.fromJson = function (data) {
var rule;
switch (data.rule) {
// adding these as some cases were failing
case CompareAction_1.CompareAction.EQUALLY:
rule = CompareAction_1.CompareAction.EQUALLY;
break;
case CompareAction_1.CompareAction.NOT_EQUAL:
rule = CompareAction_1.CompareAction.NOT_EQUAL;
break;
case CompareAction_1.CompareAction.LESS_OR_EQUAL:
rule = CompareAction_1.CompareAction.LESS_OR_EQUAL;
break;
case CompareAction_1.CompareAction.MORE_OR_EQUAL:
rule = CompareAction_1.CompareAction.MORE_OR_EQUAL;
break;
case CompareAction_1.CompareAction.MORE:
rule = CompareAction_1.CompareAction.MORE;
break;
case CompareAction_1.CompareAction.LESS:
rule = CompareAction_1.CompareAction.LESS;
break;
// ~adding these as some cases were failing
case 'EQUALLY':
rule = CompareAction_1.CompareAction.EQUALLY;
break;
case 'NOT_EQUAL':
rule = CompareAction_1.CompareAction.NOT_EQUAL;
break;
case 'LESS_OR_EQUAL':
rule = CompareAction_1.CompareAction.LESS_OR_EQUAL;
break;
case 'MORE_OR_EQUAL':
rule = CompareAction_1.CompareAction.MORE_OR_EQUAL;
break;
case 'MORE':
rule = CompareAction_1.CompareAction.MORE;
break;
case 'LESS':
rule = CompareAction_1.CompareAction.LESS;
break;
default: rule = data.rule;
}
return new OfferPriceRules(data.id, data.rulesKey, data.value, rule);
};
OfferPriceRules.prototype.toJson = function () {
return {
id: this.id,
rulesKey: this.rulesKey,
value: this.value,
rule: CompareAction_1.CompareAction[this.rule].toString()
};
};
OfferPriceRules.prototype.isValid = function (value) {
if (Number(value) && Number(this.value)) {
// compare as number
var externalNumericValue = Number(value);
var internalNumericValue = Number(this.value);
switch (this.rule) {
case CompareAction_1.CompareAction.EQUALLY:
return externalNumericValue === internalNumericValue;
case CompareAction_1.CompareAction.LESS:
return externalNumericValue < internalNumericValue;
case CompareAction_1.CompareAction.LESS_OR_EQUAL:
return externalNumericValue <= internalNumericValue;
case CompareAction_1.CompareAction.MORE:
return externalNumericValue > internalNumericValue;
case CompareAction_1.CompareAction.MORE_OR_EQUAL:
return externalNumericValue >= internalNumericValue;
case CompareAction_1.CompareAction.NOT_EQUAL:
return externalNumericValue !== internalNumericValue;
default: throw new Error('wrong rule');
}
}
else if (value) {
// compare as string
switch (this.rule) {
case CompareAction_1.CompareAction.EQUALLY:
return value === this.value;
case CompareAction_1.CompareAction.LESS:
return value < this.value;
case CompareAction_1.CompareAction.LESS_OR_EQUAL:
return value <= this.value;
case CompareAction_1.CompareAction.MORE:
return value > this.value;
case CompareAction_1.CompareAction.MORE_OR_EQUAL:
return value >= this.value;
case CompareAction_1.CompareAction.NOT_EQUAL:
return value !== this.value;
default: throw new Error('wrong rule');
}
}
else {
// value is undefined
return false;
}
};
return OfferPriceRules;
}());
exports.OfferPriceRules = OfferPriceRules;
//# sourceMappingURL=OfferPriceRules.js.map