import { Module } from '@nestjs/common'; import { OtpService } from './service/otp.service'; import { OtpRepository } from './repository/otp.repository'; import { TypeOrmModule } from '@nestjs/typeorm'; import { Otp } from './entity/otp.entity'; import { OtpController } from './controller/otp.controller'; import { MailerModule } from '@nestjs-modules/mailer'; import { HandlebarsAdapter } from '@nestjs-modules/mailer/dist/adapters/handlebars.adapter'; import { EmailService } from './service/email.service'; import { join } from 'path'; import { ConfigModule, ConfigService } from '@nestjs/config'; import { AuthModule } from '../auth/auth.module'; import { UserModule } from '../user/user.module'; import { IcsMeetingModule } from '../ics/ics.module'; import { NotificationData } from './entity/notification.entity'; import { NotificationsController } from './controller/notification.controller'; import { NotificationsService } from './service/notification.service'; import { EntityModule } from '../meta/entity.module'; import { FirebaseAdminProvider } from './firebase-admin.config'; import { NotificationRepository } from './repository/notification.repository'; @Module({ imports: [ TypeOrmModule.forFeature([Otp, NotificationData]), MailerModule.forRootAsync({ imports: [ConfigModule], inject: [ConfigService], useFactory: (configService: ConfigService) => ({ transport: { host: 'smtp.gmail.com', port: 465, secure: true, auth: { user: configService.get('EMAIL_USER'), pass: configService.get('EMAIL_PASSWORD'), }, }, defaults: { from: '"Support" <' + process.env.EMAIL_USER + '>', }, template: { dir: join(__dirname, '..', '..', 'templates'), adapter: new HandlebarsAdapter(), options: { strict: true, }, }, }), }), AuthModule, UserModule, IcsMeetingModule, EntityModule, ], providers: [ OtpService, OtpRepository, EmailService, NotificationsService, FirebaseAdminProvider, NotificationRepository, ], exports: [ OtpService, EmailService, FirebaseAdminProvider, NotificationsService, ], controllers: [OtpController, NotificationsController], }) export class NotificationModule {}