From 1783da607cc6630d08edfabb77a13ce99905c30f Mon Sep 17 00:00:00 2001 From: Nevo David Date: Sun, 13 Jul 2025 16:05:26 +0700 Subject: [PATCH 1/2] feat: is trailing --- apps/backend/src/api/routes/users.controller.ts | 1 + libraries/nestjs-libraries/src/database/prisma/schema.prisma | 1 + .../database/prisma/subscriptions/subscription.repository.ts | 2 ++ .../database/prisma/subscriptions/subscription.service.ts | 4 ++++ libraries/nestjs-libraries/src/services/stripe.service.ts | 5 ++++- 5 files changed, 12 insertions(+), 1 deletion(-) diff --git a/apps/backend/src/api/routes/users.controller.ts b/apps/backend/src/api/routes/users.controller.ts index ae5b40cf..601ba655 100644 --- a/apps/backend/src/api/routes/users.controller.ts +++ b/apps/backend/src/api/routes/users.controller.ts @@ -66,6 +66,7 @@ export class UsersController { isLifetime: !!organization?.subscription?.isLifetime, admin: !!user.isSuperAdmin, impersonate: !!impersonate, + isTrailing: !process.env.STRIPE_PUBLISHABLE_KEY ? false : organization?.isTrailing, allowTrial: organization?.allowTrial, // @ts-ignore publicApi: organization?.users[0]?.role === 'SUPERADMIN' || organization?.users[0]?.role === 'ADMIN' ? organization?.apiKey : '', diff --git a/libraries/nestjs-libraries/src/database/prisma/schema.prisma b/libraries/nestjs-libraries/src/database/prisma/schema.prisma index b95e3b5c..4a5dbdd2 100644 --- a/libraries/nestjs-libraries/src/database/prisma/schema.prisma +++ b/libraries/nestjs-libraries/src/database/prisma/schema.prisma @@ -26,6 +26,7 @@ model Organization { post Post[] @relation("organization") submittedPost Post[] @relation("submittedForOrg") allowTrial Boolean @default(false) + isTrailing Boolean @default(false) Comments Comments[] notifications Notifications[] buyerOrganization MessagesGroup[] diff --git a/libraries/nestjs-libraries/src/database/prisma/subscriptions/subscription.repository.ts b/libraries/nestjs-libraries/src/database/prisma/subscriptions/subscription.repository.ts index b90f4d54..98dbcd0e 100644 --- a/libraries/nestjs-libraries/src/database/prisma/subscriptions/subscription.repository.ts +++ b/libraries/nestjs-libraries/src/database/prisma/subscriptions/subscription.repository.ts @@ -125,6 +125,7 @@ export class SubscriptionRepository { } async createOrUpdateSubscription( + isTrailing: boolean, identifier: string, customerId: string, totalChannels: number, @@ -178,6 +179,7 @@ export class SubscriptionRepository { id: findOrg.id, }, data: { + isTrailing, allowTrial: false, }, }); diff --git a/libraries/nestjs-libraries/src/database/prisma/subscriptions/subscription.service.ts b/libraries/nestjs-libraries/src/database/prisma/subscriptions/subscription.service.ts index 2eeadacd..e829d177 100644 --- a/libraries/nestjs-libraries/src/database/prisma/subscriptions/subscription.service.ts +++ b/libraries/nestjs-libraries/src/database/prisma/subscriptions/subscription.service.ts @@ -150,6 +150,7 @@ export class SubscriptionService { } async createOrUpdateSubscription( + isTrailing: boolean, identifier: string, customerId: string, totalChannels: number, @@ -174,6 +175,7 @@ export class SubscriptionService { } } return this._subscriptionRepository.createOrUpdateSubscription( + isTrailing, identifier, customerId, totalChannels, @@ -219,6 +221,7 @@ export class SubscriptionService { async lifeTime(orgId: string, identifier: string, subscription: any) { return this.createOrUpdateSubscription( + false, identifier, identifier, pricing[subscription].channel!, @@ -233,6 +236,7 @@ export class SubscriptionService { async addSubscription(orgId: string, userId: string, subscription: any) { await this._subscriptionRepository.setCustomerId(orgId, userId); return this.createOrUpdateSubscription( + false, makeId(5), userId, pricing[subscription].channel!, diff --git a/libraries/nestjs-libraries/src/services/stripe.service.ts b/libraries/nestjs-libraries/src/services/stripe.service.ts index cf48312f..d46d9bc2 100644 --- a/libraries/nestjs-libraries/src/services/stripe.service.ts +++ b/libraries/nestjs-libraries/src/services/stripe.service.ts @@ -141,6 +141,7 @@ export class StripeService { } return this._subscriptionService.createOrUpdateSubscription( + event.data.object.status === 'trialing', uniqueId, event.data.object.customer as string, pricing[billing].channel!, @@ -168,12 +169,13 @@ export class StripeService { } return this._subscriptionService.createOrUpdateSubscription( + event.data.object.status === 'trialing', uniqueId, event.data.object.customer as string, pricing[billing].channel!, billing, period, - event.data.object.cancel_at + event.data.object.cancel_at, ); } @@ -729,6 +731,7 @@ export class StripeService { const findPricing = pricing[nextPackage]; await this._subscriptionService.createOrUpdateSubscription( + false, makeId(10), organizationId, getCurrentSubscription?.subscriptionTier === 'PRO' From bae0b6bc820c173c17bdbcce296096ff0a66a641 Mon Sep 17 00:00:00 2001 From: Nevo David Date: Sun, 13 Jul 2025 16:13:02 +0700 Subject: [PATCH 2/2] feat: is trialing --- .../src/database/prisma/organizations/organization.repository.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries/nestjs-libraries/src/database/prisma/organizations/organization.repository.ts b/libraries/nestjs-libraries/src/database/prisma/organizations/organization.repository.ts index 1991387e..919c7b7a 100644 --- a/libraries/nestjs-libraries/src/database/prisma/organizations/organization.repository.ts +++ b/libraries/nestjs-libraries/src/database/prisma/organizations/organization.repository.ts @@ -220,6 +220,7 @@ export class OrganizationRepository { name: body.company, apiKey: AuthService.fixedEncryption(makeId(20)), allowTrial: true, + isTrailing: true, users: { create: { role: Role.SUPERADMIN,