import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; // Entities import { IntegrationConfig } from './entity/integration-config.entity'; // Services import { IntegrationService } from './service/integration.service'; import { IntegrationQueueService } from './service/integration-queue.service'; // Controllers import { IntegrationController } from './controller/integration.controller'; // Strategies - API only (no SMTP) import { GmailApiStrategy } from './strategies/email/gmail-api.strategy'; import { SendGridApiStrategy } from './strategies/email/sendgrid-api.strategy'; import { WhatsAppCloudStrategy } from './strategies/whatsapp/whatsapp-cloud.strategy'; import { OzonetelVoiceStrategy } from './strategies/telephone/ozonetel-voice.strategy'; import { TubelightVoiceStrategy } from './strategies/telephone/tubelight-voice.strategy'; import { GupshupWhatsAppStrategy } from './strategies/whatsapp/gupshup-whatsapp.strategy'; import { TubelightWhatsAppStrategy } from './strategies/whatsapp/tubelight-whatsapp.strategy'; // SMS Strategies import { GupshupSmsStrategy } from './strategies/sms/gupshup-sms.strategy'; import { TubelightSmsStrategy } from './strategies/sms/tubelight-sms.strategy'; import { Msg91SmsStrategy } from './strategies/sms/msg91-sms.strategy'; // New unified strategies import { OutlookStrategy } from './strategies/email/outlook.strategy'; import { WhatsAppStrategy } from './strategies/whatsapp/whatsapp.strategy'; import { OAuthService } from './service/oauth.service'; // Factories import { EmailFactory } from './factories/email.factory'; import { SmsFactory } from './factories/sms.factory'; import { WhatsAppFactory } from './factories/whatsapp.factory'; import { TelephoneFactory } from './factories/telephone.factory'; import { IntegrationFactory } from './factories/integration.factory'; import { GoogleController } from './controller/calender-event.controller'; import { GoogleService } from './service/calendar-event.service'; import { WrapperService } from './service/wrapper.service'; import { WrapperController } from './controller/wrapper.controller'; import { IcsMeetingModule } from '../ics/ics.module'; import { IntegrationSource } from './entity/integration-source.entity'; import { UserIntegration } from './entity/user-integration.entity'; import { IntegrationEntityMapper } from './entity/integration-entity-mapper.entity'; import { IntegrationEntityMapperService } from './service/integration-entity-mapper.service'; import { MapperModule } from '../mapper/mapper.module'; import { EntityModule } from '../meta/entity.module'; @Module({ imports: [ TypeOrmModule.forFeature([ IntegrationConfig, IntegrationSource, UserIntegration, IntegrationEntityMapper, ]), IcsMeetingModule, MapperModule, EntityModule ], controllers: [IntegrationController, GoogleController, WrapperController], providers: [ // Main Services IntegrationService, IntegrationQueueService, IntegrationEntityMapperService, OAuthService, // Email Strategies (API only) GmailApiStrategy, SendGridApiStrategy, // WhatsApp/Telephone Strategies WhatsAppCloudStrategy, OzonetelVoiceStrategy, TubelightVoiceStrategy, GupshupWhatsAppStrategy, TubelightWhatsAppStrategy, // SMS Strategies GupshupSmsStrategy, TubelightSmsStrategy, Msg91SmsStrategy, // New unified strategies OutlookStrategy, WhatsAppStrategy, // Factories EmailFactory, SmsFactory, WhatsAppFactory, TelephoneFactory, IntegrationFactory, GoogleService, WrapperService, ], exports: [ IntegrationService, IntegrationFactory, IntegrationQueueService, WrapperService, IntegrationEntityMapperService, ], }) export class IntegrationModule { }