import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { EventEmitterModule } from '@nestjs/event-emitter';
import { ScheduleModule } from '@nestjs/schedule';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { AttachmentModule } from './attachment/attachment.module';
import { ConfigurationModule } from './configuration/configuration.module';
import { EmailModule } from './email/email.module';
import { LicenseeModule } from './licensee/licensee.module';
import { MessageModule } from './message/message.module';
import { MotdModule } from './motd/motd.module';
import { dbConfig } from './ormconfig';
import { SharedModule } from './shared/shared.module';
import { SlackUserModule } from './slack-user/slack-user.module';
import { SlackModule } from './slack/slack.module';
import { TicketEventModule } from './ticket-event/ticket-event.module';
import { TicketModule } from './ticket/ticket.module';
import { VersionModule } from './version/version.module';
import { WorkingHoursModule } from './working-hours/working-hours.module';

@Module({
  imports: [
    ConfigModule.forRoot({
      isGlobal: true,
      ignoreEnvFile: process.env.NODE_ENV === 'production',
    }),
    TypeOrmModule.forRoot(dbConfig()),
    EventEmitterModule.forRoot(),
    SlackModule,
    TicketModule,
    MessageModule,
    AttachmentModule,
    SharedModule,
    ScheduleModule.forRoot(),
    SlackUserModule,
    VersionModule,
    TicketEventModule,
    EmailModule,
    LicenseeModule,
    WorkingHoursModule,
    ConfigurationModule,
    MotdModule,
  ],
  exports: [AppService],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}
