diff --git a/apps/web/app/(app)/environments/[environmentId]/settings/(organization)/billing/unlimited/page.tsx b/apps/web/app/(app)/environments/[environmentId]/settings/(organization)/billing/unlimited/page.tsx new file mode 100644 index 0000000000..cb1a99d571 --- /dev/null +++ b/apps/web/app/(app)/environments/[environmentId]/settings/(organization)/billing/unlimited/page.tsx @@ -0,0 +1,30 @@ +import { redirect } from "next/navigation"; +import { STRIPE_PRICE_LOOKUP_KEYS } from "@formbricks/lib/constants"; +import { getOrganizationByEnvironmentId } from "@formbricks/lib/organization/service"; +import { upgradePlanAction } from "../actions"; + +const Page = async ({ params }) => { + const organization = await getOrganizationByEnvironmentId(params.environmentId); + if (!organization) { + throw new Error("Organization not found"); + } + + const { status, newPlan, url } = await upgradePlanAction( + organization.id, + params.environmentId, + STRIPE_PRICE_LOOKUP_KEYS.UNLIMITED_99 + ); + + if (status != 200) { + throw new Error("Something went wrong"); + } + if (newPlan && url) { + redirect(url); + } else if (!newPlan) { + redirect(`/billing-confirmation?environmentId=${params.environmentId}`); + } else { + throw new Error("Something went wrong"); + } +}; + +export default Page; diff --git a/apps/web/app/(app)/environments/[environmentId]/settings/(organization)/billing/unlimited199/page.tsx b/apps/web/app/(app)/environments/[environmentId]/settings/(organization)/billing/unlimited199/page.tsx new file mode 100644 index 0000000000..f98744aef9 --- /dev/null +++ b/apps/web/app/(app)/environments/[environmentId]/settings/(organization)/billing/unlimited199/page.tsx @@ -0,0 +1,30 @@ +import { redirect } from "next/navigation"; +import { STRIPE_PRICE_LOOKUP_KEYS } from "@formbricks/lib/constants"; +import { getOrganizationByEnvironmentId } from "@formbricks/lib/organization/service"; +import { upgradePlanAction } from "../actions"; + +const Page = async ({ params }) => { + const organization = await getOrganizationByEnvironmentId(params.environmentId); + if (!organization) { + throw new Error("Organization not found"); + } + + const { status, newPlan, url } = await upgradePlanAction( + organization.id, + params.environmentId, + STRIPE_PRICE_LOOKUP_KEYS.UNLIMITED_199 + ); + + if (status != 200) { + throw new Error("Something went wrong"); + } + if (newPlan && url) { + redirect(url); + } else if (!newPlan) { + redirect(`/billing-confirmation?environmentId=${params.environmentId}`); + } else { + throw new Error("Something went wrong"); + } +}; + +export default Page; diff --git a/packages/lib/constants.ts b/packages/lib/constants.ts index a0ca9a6ba7..8d982dd9b1 100644 --- a/packages/lib/constants.ts +++ b/packages/lib/constants.ts @@ -193,6 +193,8 @@ export enum STRIPE_PRICE_LOOKUP_KEYS { STARTUP_YEARLY = "formbricks_startup_yearly", SCALE_MONTHLY = "formbricks_scale_monthly", SCALE_YEARLY = "formbricks_scale_yearly", + UNLIMITED_99 = "formbricks_unlimited_99", + UNLIMITED_199 = "formbricks_unlimited_199", } export const BILLING_LIMITS = { @@ -208,4 +210,4 @@ export const BILLING_LIMITS = { RESPONSES: 5000, MIU: 20000, }, -}; +} as const;