2024-02-06 16:16:10 +11:00
|
|
|
import type { Subscription } from '.prisma/client';
|
|
|
|
|
import { SubscriptionStatus } from '.prisma/client';
|
|
|
|
|
|
|
|
|
|
/**
|
2024-02-17 12:42:00 +11:00
|
|
|
* Returns true if there is a subscription that is active and is one of the provided price IDs.
|
2024-02-06 16:16:10 +11:00
|
|
|
*/
|
2024-02-17 12:42:00 +11:00
|
|
|
export const subscriptionsContainsActivePlan = (
|
2024-02-06 16:16:10 +11:00
|
|
|
subscriptions: Subscription[],
|
2024-02-17 12:42:00 +11:00
|
|
|
priceIds: string[],
|
2024-12-14 13:44:25 +09:00
|
|
|
allowPastDue?: boolean,
|
2024-02-06 16:16:10 +11:00
|
|
|
) => {
|
2024-12-14 13:44:25 +09:00
|
|
|
const allowedSubscriptionStatuses: SubscriptionStatus[] = [SubscriptionStatus.ACTIVE];
|
|
|
|
|
|
|
|
|
|
if (allowPastDue) {
|
|
|
|
|
allowedSubscriptionStatuses.push(SubscriptionStatus.PAST_DUE);
|
|
|
|
|
}
|
|
|
|
|
|
2024-02-06 16:16:10 +11:00
|
|
|
return subscriptions.some(
|
|
|
|
|
(subscription) =>
|
2024-12-14 13:44:25 +09:00
|
|
|
allowedSubscriptionStatuses.includes(subscription.status) &&
|
|
|
|
|
priceIds.includes(subscription.priceId),
|
2024-02-06 16:16:10 +11:00
|
|
|
);
|
|
|
|
|
};
|
2024-12-12 01:10:01 +09:00
|
|
|
|
2024-06-06 14:46:48 +10:00
|
|
|
/**
|
|
|
|
|
* Returns true if there is a subscription that is active and is one of the provided product IDs.
|
|
|
|
|
*/
|
|
|
|
|
export const subscriptionsContainsActiveProductId = (
|
|
|
|
|
subscriptions: Subscription[],
|
|
|
|
|
productId: string[],
|
|
|
|
|
) => {
|
|
|
|
|
return subscriptions.some(
|
|
|
|
|
(subscription) =>
|
|
|
|
|
subscription.status === SubscriptionStatus.ACTIVE && productId.includes(subscription.planId),
|
|
|
|
|
);
|
|
|
|
|
};
|