import { Module } from '@nestjs/common';
import { JwtModule } from '@nestjs/jwt';
import { TypeOrmModule } from '@nestjs/typeorm';

import { ActivityLogsModule } from '../activity-logs/activity-logs.module';

import { Notification } from './entities/notification.entity';

import { NotificationsController } from './notifications.controller';

import { NotificationsService } from './notifications.service';

import { EmailService } from './email.service';
import { WhatsappService } from './whatsapp.service';

import { EmailProvider } from './providers/email.provider';
import { WhatsappProvider } from './providers/whatsapp.provider';

@Module({
  imports: [
    TypeOrmModule.forFeature([
      Notification,
    ]),

    ActivityLogsModule,

    JwtModule.register({
      secret:
        process.env.JWT_SECRET ||
        'super-secret-jwt-key',

      signOptions: {
        expiresIn: '7d',
      },
    }),
  ],

  controllers: [
    NotificationsController,
  ],

  providers: [
    /*
    |--------------------------------------------------------------------------
    | CORE
    |--------------------------------------------------------------------------
    */

    NotificationsService,

    /*
    |--------------------------------------------------------------------------
    | SERVICES
    |--------------------------------------------------------------------------
    */

    EmailService,
    WhatsappService,

    /*
    |--------------------------------------------------------------------------
    | PROVIDERS
    |--------------------------------------------------------------------------
    */

    EmailProvider,
    WhatsappProvider,
  ],

  exports: [
    NotificationsService,

    EmailService,
    WhatsappService,

    EmailProvider,
    WhatsappProvider,
  ],
})
export class NotificationsModule {}