@lomray/microservice-payment-stripe
Version:
Stripe payment microservice based on NodeJS & inverted json.
94 lines (90 loc) • 3.25 kB
JavaScript
;
var tslib = require('tslib');
var microserviceHelpers = require('@lomray/microservice-helpers');
var classTransformer = require('class-transformer');
var classValidator = require('class-validator');
var couponDuration = require('../../constants/coupon-duration.js');
var coupon = require('../../entities/coupon.js');
var stripe = require('../../services/payment-gateway/stripe.js');
class CreateCouponInput {
/**
* Check if duration is repeating
*/
static isDurationRepeating(entity) {
return entity.duration === couponDuration.REPEATING;
}
}
tslib.__decorate([
classValidator.IsEnum(couponDuration),
tslib.__metadata("design:type", String)
], CreateCouponInput.prototype, "duration", void 0);
tslib.__decorate([
classValidator.IsString({ each: true }),
tslib.__metadata("design:type", Array)
], CreateCouponInput.prototype, "products", void 0);
tslib.__decorate([
classValidator.Length(1, 36),
microserviceHelpers.IsUndefinable(),
tslib.__metadata("design:type", String)
], CreateCouponInput.prototype, "userId", void 0);
tslib.__decorate([
classValidator.Length(1, 100),
microserviceHelpers.IsUndefinable(),
tslib.__metadata("design:type", String)
], CreateCouponInput.prototype, "name", void 0);
tslib.__decorate([
classValidator.Length(3, 3),
microserviceHelpers.IsUndefinable(),
tslib.__metadata("design:type", String)
], CreateCouponInput.prototype, "currency", void 0);
tslib.__decorate([
classValidator.IsNumber(),
microserviceHelpers.IsUndefinable(),
tslib.__metadata("design:type", Number)
], CreateCouponInput.prototype, "amountOff", void 0);
tslib.__decorate([
classValidator.IsNumber(),
microserviceHelpers.IsUndefinable(),
tslib.__metadata("design:type", Number)
], CreateCouponInput.prototype, "percentOff", void 0);
tslib.__decorate([
microserviceHelpers.IsValidate(CreateCouponInput, (entity) => CreateCouponInput.isDurationRepeating(entity)),
classValidator.IsNumber(),
tslib.__metadata("design:type", Number)
], CreateCouponInput.prototype, "durationInMonths", void 0);
tslib.__decorate([
classValidator.IsNumber(),
microserviceHelpers.IsUndefinable(),
tslib.__metadata("design:type", Number)
], CreateCouponInput.prototype, "maxRedemptions", void 0);
class CreateCouponOutput {
}
tslib.__decorate([
classValidator.IsObject(),
classTransformer.Type(() => coupon),
tslib.__metadata("design:type", coupon)
], CreateCouponOutput.prototype, "entity", void 0);
/**
* Create new coupon
*/
const create = microserviceHelpers.Endpoint.custom(() => ({
input: CreateCouponInput,
output: CreateCouponOutput,
description: 'Create new coupon',
}), ({ userId, name, currency, amountOff, percentOff, duration, durationInMonths, maxRedemptions, products, }) => tslib.__awaiter(void 0, void 0, void 0, function* () {
const service = yield stripe.init();
return {
entity: yield service.createCoupon({
userId,
name,
currency,
amountOff,
percentOff,
duration,
durationInMonths,
maxRedemptions,
products,
}),
};
}));
module.exports = create;