diff --git a/packages/server/src/constants/event-tracker.ts b/packages/server/src/constants/event-tracker.ts index e5453932e..bb578fcfc 100644 --- a/packages/server/src/constants/event-tracker.ts +++ b/packages/server/src/constants/event-tracker.ts @@ -34,6 +34,26 @@ export const ITEM_EVENT_DELETED = 'Item deleted'; export const AUTH_SIGNED_UP = 'Auth Signed-up'; export const AUTH_RESET_PASSWORD = 'Auth reset password'; +export const SUBSCRIPTION_CANCELLED = 'Subscription cancelled'; +export const SUBSCRIPTION_RESUMED = 'Subscription resumed'; +export const SUBSCRIPTION_PLAN_CHANGED = 'Subscription plan changed'; + +export const CUSTOMER_CREATED = 'Customer created'; +export const CUSTOMER_EDITED = 'Customer edited'; +export const CUSTOMER_DELETED = 'Customer deleted'; + +export const VENDOR_CREATED = 'Vendor created'; +export const VENDOR_EDITED = 'Vendor edited'; +export const VENDOR_DELETED = 'Vendor deleted'; + +export const TRANSACTIONS_LOCKING_LOCKED = 'Transactions locking locked'; +export const TRANSACTIONS_LOCKING_LOCKING_CANCELLED = + 'Transactions locking cancelled'; +export const TRANSACTIONS_LOCKING_PARTIALLY_UNLOCKED = + 'Transactions locking partially unlocked'; +export const TRANSACTIONS_LOCKING_PARTIALLY_UNLOCK_CANCELLED = + 'Transactions locking partially unlock cancelled'; + export const BANK_TRANSACTION_MATCHED = 'Bank transaction matching deleted'; export const BANK_TRANSACTION_EXCLUDED = 'Bank transaction excluded'; export const BANK_TRANSACTION_CATEGORIZED = 'Bank transaction categorized'; diff --git a/packages/server/src/services/EventsTracker/events/CustomerEventsTracker.ts b/packages/server/src/services/EventsTracker/events/CustomerEventsTracker.ts index 5dc902c8f..85527bb17 100644 --- a/packages/server/src/services/EventsTracker/events/CustomerEventsTracker.ts +++ b/packages/server/src/services/EventsTracker/events/CustomerEventsTracker.ts @@ -18,9 +18,6 @@ export class CustomerEventsTracker extends EventSubscriber { @Inject() private posthog: PosthogService; - /** - * Constructor method. - */ public attach(bus) { bus.subscribe( events.customers.onCreated, diff --git a/packages/server/src/services/EventsTracker/events/SubscriptionEventsTracker.ts b/packages/server/src/services/EventsTracker/events/SubscriptionEventsTracker.ts new file mode 100644 index 000000000..5f547efb9 --- /dev/null +++ b/packages/server/src/services/EventsTracker/events/SubscriptionEventsTracker.ts @@ -0,0 +1,76 @@ +import { Inject, Service } from 'typedi'; +import { EventSubscriber } from '@/lib/EventPublisher/EventPublisher'; +import { ITransactionsLockingPartialUnlocked } from '@/interfaces'; +import { PosthogService } from '../PostHog'; +import { + TRANSACTIONS_LOCKING_LOCKED, + TRANSACTIONS_LOCKING_LOCKING_CANCELLED, + TRANSACTIONS_LOCKING_PARTIALLY_UNLOCK_CANCELLED, + TRANSACTIONS_LOCKING_PARTIALLY_UNLOCKED, +} from '@/constants/event-tracker'; +import events from '@/subscribers/events'; + +@Service() +export class TransactionsLockingEventsTracker extends EventSubscriber { + @Inject() + private posthog: PosthogService; + + public attach(bus) { + bus.subscribe( + events.transactionsLocking.locked, + this.handleTransactionsLockingLockedEvent + ); + bus.subscribe( + events.transactionsLocking.lockCanceled, + this.handleTransactionsLockingCancelledEvent + ); + bus.subscribe( + events.transactionsLocking.partialUnlocked, + this.handleTransactionsLockingPartiallyUnlockedEvent + ); + bus.subscribe( + events.transactionsLocking.partialUnlockCanceled, + this.handleTransactionsLockingPartiallyUnlockCancelledEvent + ); + } + + private handleTransactionsLockingLockedEvent = ({ + tenantId, + }: ITransactionsLockingPartialUnlocked) => { + this.posthog.trackEvent({ + distinctId: `tenant-${tenantId}`, + event: TRANSACTIONS_LOCKING_LOCKED, + properties: {}, + }); + }; + + private handleTransactionsLockingCancelledEvent = ({ + tenantId, + }: ITransactionsLockingPartialUnlocked) => { + this.posthog.trackEvent({ + distinctId: `tenant-${tenantId}`, + event: TRANSACTIONS_LOCKING_LOCKING_CANCELLED, + properties: {}, + }); + }; + + private handleTransactionsLockingPartiallyUnlockedEvent = ({ + tenantId, + }: ITransactionsLockingPartialUnlocked) => { + this.posthog.trackEvent({ + distinctId: `tenant-${tenantId}`, + event: TRANSACTIONS_LOCKING_PARTIALLY_UNLOCKED, + properties: {}, + }); + }; + + private handleTransactionsLockingPartiallyUnlockCancelledEvent = ({ + tenantId, + }: ITransactionsLockingPartialUnlocked) => { + this.posthog.trackEvent({ + distinctId: `tenant-${tenantId}`, + event: TRANSACTIONS_LOCKING_PARTIALLY_UNLOCK_CANCELLED, + properties: {}, + }); + }; +} diff --git a/packages/server/src/services/EventsTracker/events/TransactionsLockingEventsTracker.ts b/packages/server/src/services/EventsTracker/events/TransactionsLockingEventsTracker.ts new file mode 100644 index 000000000..1c1cfc81b --- /dev/null +++ b/packages/server/src/services/EventsTracker/events/TransactionsLockingEventsTracker.ts @@ -0,0 +1,55 @@ +import { Inject, Service } from 'typedi'; +import { EventSubscriber } from '@/lib/EventPublisher/EventPublisher'; +import { ITransactionsLockingPartialUnlocked } from '@/interfaces'; +import { PosthogService } from '../PostHog'; +import { + SUBSCRIPTION_CANCELLED, + SUBSCRIPTION_PLAN_CHANGED, + SUBSCRIPTION_RESUMED, +} from '@/constants/event-tracker'; +import events from '@/subscribers/events'; + +@Service() +export class TransactionsLockingEventsTracker extends EventSubscriber { + @Inject() + private posthog: PosthogService; + + public attach(bus) { + bus.subscribe( + events.subscription.onSubscriptionResumed, + this.handleSubscriptionResumedEvent + ); + bus.subscribe( + events.subscription.onSubscriptionCancelled, + this.handleSubscriptionCancelledEvent + ); + bus.subscribe( + events.subscription.onSubscriptionPlanChanged, + this.handleSubscriptionPlanChangedEvent + ); + } + + private handleSubscriptionResumedEvent = ({ tenantId }) => { + this.posthog.trackEvent({ + distinctId: `tenant-${tenantId}`, + event: SUBSCRIPTION_RESUMED, + properties: {}, + }); + }; + + private handleSubscriptionCancelledEvent = ({ tenantId }) => { + this.posthog.trackEvent({ + distinctId: `tenant-${tenantId}`, + event: SUBSCRIPTION_CANCELLED, + properties: {}, + }); + }; + + private handleSubscriptionPlanChangedEvent = ({ tenantId }) => { + this.posthog.trackEvent({ + distinctId: `tenant-${tenantId}`, + event: SUBSCRIPTION_PLAN_CHANGED, + properties: {}, + }); + }; +} diff --git a/packages/server/src/services/EventsTracker/events/VendorEventsTracker.ts b/packages/server/src/services/EventsTracker/events/VendorEventsTracker.ts index d5fb2ba2a..968589eb4 100644 --- a/packages/server/src/services/EventsTracker/events/VendorEventsTracker.ts +++ b/packages/server/src/services/EventsTracker/events/VendorEventsTracker.ts @@ -18,9 +18,6 @@ export class VendorEventsTracker extends EventSubscriber { @Inject() private posthog: PosthogService; - /** - * Constructor method. - */ public attach(bus) { bus.subscribe(events.vendors.onCreated, this.handleTrackVendorCreatedEvent); bus.subscribe(events.vendors.onEdited, this.handleTrackEditedVendorEvent);