UNPKG

@unchainedshop/plugins

Version:

Official plugin collection for the Unchained Engine with payment, delivery, and pricing adapters

52 lines (51 loc) 1.93 kB
import { EnrollmentAdapter } from '@unchainedshop/core'; export const rangeMatcher = (date = new Date()) => { const timestamp = date.getTime(); return ({ start, end }) => { const startTimestamp = new Date(start).getTime(); const endTimestamp = new Date(end).getTime(); return startTimestamp <= timestamp && endTimestamp >= timestamp; }; }; export const LicensedEnrollments = { ...EnrollmentAdapter, key: 'shop.unchained.enrollments.licensed', version: '1.0.0', label: 'Simple Licensed Enrollments', isActivatedFor: (productPlan) => { return productPlan?.usageCalculationType === 'LICENSED'; }, actions: (params) => { const { enrollment } = params; return { ...EnrollmentAdapter.actions(params), isValidForActivation: async () => { const periods = enrollment?.periods || []; return periods.findIndex(rangeMatcher()) !== -1; }, isOverdue: async () => { return false; }, configurationForOrder: async (context) => { const { period } = context; const beginningOfPeriod = period.start.getTime() <= new Date().getTime(); if (!enrollment) throw new Error('Enrollment missing in context'); if (beginningOfPeriod) { return { period, orderContext: {}, orderPositionTemplates: [ { quantity: 1, productId: enrollment.productId, originalProductId: enrollment.productId, }, ], }; } return null; }, }; }, };