diff --git a/packages/server/src/constants/event-tracker.ts b/packages/server/src/constants/event-tracker.ts index d5d21a508..495819377 100644 --- a/packages/server/src/constants/event-tracker.ts +++ b/packages/server/src/constants/event-tracker.ts @@ -69,6 +69,16 @@ export const BANK_RULE_CREATED = 'Bank rule created'; export const BANK_RULE_EDITED = 'Bank rule edited'; export const BANK_RULE_DELETED = 'Bank rule deleted'; +export const PDF_TEMPLATE_CREATED = 'PDF template created'; +export const PDF_TEMPLATE_EDITED = 'PDF template edited'; +export const PDF_TEMPLATE_DELETED = 'PDF template deleted'; +export const PDF_TEMPLATE_ASSIGNED_DEFAULT = 'PDF template assigned as default'; + +export const PAYMENT_METHOD_EDITED = 'Payment method edited'; +export const PAYMENT_METHOD_DELETED = 'Payment method deleted'; + +export const INVOICE_PAYMENT_LINK_GENERATED = 'Invoice payment link generated'; + // # Event Groups export const ACCOUNT_GROUP = 'Account'; export const ITEM_GROUP = 'Item'; diff --git a/packages/server/src/services/EventsTracker/events/PaymentLinkEventsTracker.ts b/packages/server/src/services/EventsTracker/events/PaymentLinkEventsTracker.ts new file mode 100644 index 000000000..37aab4fcf --- /dev/null +++ b/packages/server/src/services/EventsTracker/events/PaymentLinkEventsTracker.ts @@ -0,0 +1,29 @@ +import { Inject, Service } from 'typedi'; +import { EventSubscriber } from '@/lib/EventPublisher/EventPublisher'; +import { PosthogService } from '../PostHog'; +import { INVOICE_PAYMENT_LINK_GENERATED } from '@/constants/event-tracker'; +import events from '@/subscribers/events'; + +@Service() +export class PaymentLinkEventsTracker extends EventSubscriber { + @Inject() + private posthog: PosthogService; + + /** + * Constructor method. + */ + public attach(bus) { + bus.subscribe( + events.saleInvoice.onPublicLinkGenerated, + this.handleTrackInvoicePublicLinkGeneratedEvent + ); + } + + public handleTrackInvoicePublicLinkGeneratedEvent({ tenantId }) { + this.posthog.trackEvent({ + distinctId: `tenant-${tenantId}`, + event: INVOICE_PAYMENT_LINK_GENERATED, + properties: {}, + }); + } +} diff --git a/packages/server/src/services/EventsTracker/events/PaymentMethodEventsTracker.ts b/packages/server/src/services/EventsTracker/events/PaymentMethodEventsTracker.ts new file mode 100644 index 000000000..a82081846 --- /dev/null +++ b/packages/server/src/services/EventsTracker/events/PaymentMethodEventsTracker.ts @@ -0,0 +1,44 @@ +import { Inject, Service } from 'typedi'; +import { EventSubscriber } from '@/lib/EventPublisher/EventPublisher'; +import { PosthogService } from '../PostHog'; +import events from '@/subscribers/events'; +import { + PAYMENT_METHOD_EDITED, + PAYMENT_METHOD_DELETED, +} from '@/constants/event-tracker'; + +@Service() +export class PaymentMethodEventsTracker extends EventSubscriber { + @Inject() + private posthog: PosthogService; + + /** + * Constructor method. + */ + public attach(bus) { + bus.subscribe( + events.paymentMethod.onEdited, + this.handleTrackPaymentMethodEditedEvent + ); + bus.subscribe( + events.paymentMethod.onDeleted, + this.handleTrackPaymentMethodDeletedEvent + ); + } + + private handleTrackPaymentMethodEditedEvent = ({ tenantId }) => { + this.posthog.trackEvent({ + distinctId: `tenant-${tenantId}`, + event: PAYMENT_METHOD_EDITED, + properties: {}, + }); + }; + + private handleTrackPaymentMethodDeletedEvent = ({ tenantId }) => { + this.posthog.trackEvent({ + distinctId: `tenant-${tenantId}`, + event: PAYMENT_METHOD_DELETED, + properties: {}, + }); + }; +} diff --git a/packages/server/src/services/EventsTracker/events/PdfTemplateEventsTracker.ts b/packages/server/src/services/EventsTracker/events/PdfTemplateEventsTracker.ts new file mode 100644 index 000000000..68ced58a0 --- /dev/null +++ b/packages/server/src/services/EventsTracker/events/PdfTemplateEventsTracker.ts @@ -0,0 +1,67 @@ +import { Inject, Service } from 'typedi'; +import { + PDF_TEMPLATE_CREATED, + PDF_TEMPLATE_EDITED, + PDF_TEMPLATE_DELETED, + PDF_TEMPLATE_ASSIGNED_DEFAULT, +} from '@/constants/event-tracker'; +import { PosthogService } from '../PostHog'; +import { EventSubscriber } from '@/lib/EventPublisher/EventPublisher'; +import events from '@/subscribers/events'; + +@Service() +export class PdfTemplateEventsTracker extends EventSubscriber { + @Inject() + private posthog: PosthogService; + + public attach(bus) { + bus.subscribe( + events.pdfTemplate.onCreated, + this.handleTrackPdfTemplateCreatedEvent + ); + bus.subscribe( + events.pdfTemplate.onEdited, + this.handleTrackEditedPdfTemplateEvent + ); + bus.subscribe( + events.pdfTemplate.onDeleted, + this.handleTrackDeletedPdfTemplateEvent + ); + bus.subscribe( + events.pdfTemplate.onAssignedDefault, + this.handleTrackAssignedAsDefaultPdfTemplateEvent + ); + } + + private handleTrackPdfTemplateCreatedEvent = ({ tenantId }) => { + this.posthog.trackEvent({ + distinctId: `tenant-${tenantId}`, + event: PDF_TEMPLATE_CREATED, + properties: {}, + }); + }; + + private handleTrackEditedPdfTemplateEvent = ({ tenantId }) => { + this.posthog.trackEvent({ + distinctId: `tenant-${tenantId}`, + event: PDF_TEMPLATE_EDITED, + properties: {}, + }); + }; + + private handleTrackDeletedPdfTemplateEvent = ({ tenantId }) => { + this.posthog.trackEvent({ + distinctId: `tenant-${tenantId}`, + event: PDF_TEMPLATE_DELETED, + properties: {}, + }); + }; + + private handleTrackAssignedAsDefaultPdfTemplateEvent = ({ tenantId }) => { + this.posthog.trackEvent({ + distinctId: `tenant-${tenantId}`, + event: PDF_TEMPLATE_ASSIGNED_DEFAULT, + properties: {}, + }); + }; +} diff --git a/packages/server/src/services/EventsTracker/events/events.ts b/packages/server/src/services/EventsTracker/events/events.ts index 10d13dcef..3dafa92bb 100644 --- a/packages/server/src/services/EventsTracker/events/events.ts +++ b/packages/server/src/services/EventsTracker/events/events.ts @@ -12,6 +12,9 @@ import { CustomerEventsTracker } from './CustomerEventsTracker'; import { VendorEventsTracker } from './VendorEventsTracker'; import { ManualJournalEventsTracker } from './ManualJournalEventsTracker'; import { BankRuleEventsTracker } from './BankRuleEventsTracker'; +import { PdfTemplateEventsTracker } from './PdfTemplateEventsTracker'; +import { PaymentMethodEventsTracker } from './PaymentMethodEventsTracker'; +import { PaymentLinkEventsTracker } from './PaymentLinkEventsTracker'; export const EventsTrackerListeners = [ SaleInvoiceEventsTracker, @@ -28,4 +31,7 @@ export const EventsTrackerListeners = [ VendorEventsTracker, ManualJournalEventsTracker, BankRuleEventsTracker, + PdfTemplateEventsTracker, + PaymentMethodEventsTracker, + PaymentLinkEventsTracker, ];