voucher-validator
Version:
This lib provide validator to check business rules for a voucher
32 lines • 1.69 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.VoucherValidator = void 0;
const types_ddd_1 = require("types-ddd");
const voucher_specification_1 = require("../specification/voucher.specification");
const voucher_specification_2 = require("../specification/voucher.specification");
const voucher_specification_3 = require("../specification/voucher.specification");
class VoucherValidator extends types_ddd_1.SpecificationComposite {
constructor(props) {
super();
this.props = props;
}
isSatisfiedBy(voucher) {
const isNominal = voucher.tipoCupom === 'NOMINAL';
if (!isNominal)
return new voucher_specification_1.IsOnRangeDateSpecification()
.and(new voucher_specification_3.IsNotUseVoucherSpecification())
.and(new voucher_specification_3.IsValidProductSpecification(this.props.product))
.and(new voucher_specification_2.IsNotDeletedSpecification())
.isSatisfiedBy(voucher);
return new voucher_specification_2.IsNominalSpecification()
.and(new voucher_specification_1.IsOnRangeDateSpecification())
.and(new voucher_specification_3.IsNotUseVoucherSpecification())
.and(new voucher_specification_1.IsValidDocumentSpecification(this.props.userDocument))
.and(new voucher_specification_3.IsValidProductSpecification(this.props.product))
.and(new voucher_specification_2.IsNotDeletedSpecification())
.isSatisfiedBy(voucher);
}
}
exports.VoucherValidator = VoucherValidator;
exports.default = VoucherValidator;
//# sourceMappingURL=voucher-validator.js.map