UNPKG

@dbbs/strapi-stripe-payment

Version:
86 lines (85 loc) 2.91 kB
"use strict"; /** * service */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const http_errors_1 = __importDefault(require("http-errors")); const strapi_1 = require("@strapi/strapi"); const enums_1 = require("../enums"); exports.default = strapi_1.factories.createCoreService('plugin::stripe-payment.plan', ({ strapi }) => ({ async create(params) { const { price, interval, productId, type, currency } = params; const product = await strapi.query('plugin::stripe-payment.product').findOne({ where: { id: productId }, populate: { plans: true } }); if (!product) { throw new http_errors_1.default.NotFound(`Cannot create a plan as the product with ID ${productId} was not found`); } const planData = { currency, product: product.stripe_id, unit_amount: price * 100 }; if (type === enums_1.PlanType.RECURRING) { planData.recurring = { interval }; } const plan = await strapi.plugin('stripe-payment').service('stripe').prices.create(planData); const savedPlan = await strapi.query('plugin::stripe-payment.plan').create({ data: { price, interval, type, stripe_id: plan.id, product: product.id, currency } }); await strapi.query('plugin::stripe-payment.product').update({ where: { id: product.id }, data: { plans: [...product.plans, savedPlan.id] } }); return savedPlan; }, async getPlanById(params) { const { id } = params; const plan = await strapi.query('plugin::stripe-payment.plan').findOne({ where: { id } }); return plan; }, async getPlans() { const plans = await strapi.query('plugin::stripe-payment.plan').findMany({}); return plans; }, async delete(params) { const { id } = params; const plan = await strapi.query('plugin::stripe-payment.plan').findOne({ where: { id }, populate: { product: true } }); if (!plan) { return null; } await strapi.plugin('stripe-payment').service('stripe').prices.update(plan.stripe_id, { active: false }); await strapi.query('plugin::stripe-payment.plan').delete({ where: { id } }); return { id }; }, async getUniqueCurrencies() { const currencies = Object.values(enums_1.SupportedCurrency); return currencies; } }));