@unchainedshop/plugins
Version:
Because of a Typescript issue with upstream "postfinancecheckout", the Postfinance plugin has been disabled from transpilation, import the source ts files from src and enable node_module tsc or copy over the src/payment/postfinance-checkout to your projec
35 lines (30 loc) • 1.17 kB
text/typescript
import { UnchainedCore } from '@unchainedshop/core';
export const fixPeriods = async (
{ transactionId, enrollmentId, orderId, transactions },
unchainedAPI: UnchainedCore,
) => {
const relevantTransactions = transactions.filter(
// eslint-disable-next-line
({ original_transaction_id }) => {
return original_transaction_id === transactionId; // eslint-disable-line
},
);
const adjustedEnrollmentPeriods = relevantTransactions
.map((transaction) => {
return {
isTrial: transaction.is_trial_period === 'true', // eslint-disable-line
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),
),
);
};