UNPKG

@lomray/microservice-payment-stripe

Version:

Stripe payment microservice based on NodeJS & inverted json.

94 lines (90 loc) 3.25 kB
'use strict'; 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;