@unchainedshop/plugins
Version:
Official plugin collection for the Unchained Engine with payment, delivery, and pricing adapters
21 lines (20 loc) • 1.06 kB
JavaScript
import {} from '@unchainedshop/core';
export const fixPeriods = async ({ transactionId, enrollmentId, orderId, transactions }, unchainedAPI) => {
const relevantTransactions = transactions.filter(({ original_transaction_id }) => {
return original_transaction_id === transactionId;
});
const adjustedEnrollmentPeriods = relevantTransactions
.map((transaction) => {
return {
isTrial: transaction.is_trial_period === 'true',
start: new Date(parseInt(transaction.purchase_date_ms, 10)),
end: new Date(parseInt(transaction.expires_date_ms, 10)),
orderId: transaction.transaction_id === transactionId ? orderId : null,
};
})
.toSorted((left, right) => {
return left.end.getTime() - right.end.getTime();
});
await unchainedAPI.modules.enrollments.removeEnrollmentPeriodByOrderId(enrollmentId, orderId);
return Promise.all(adjustedEnrollmentPeriods.map((period) => unchainedAPI.modules.enrollments.addEnrollmentPeriod(enrollmentId, period)));
};