import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { ConfigModule } from '@nestjs/config';
import { TypeOrmModule } from '@nestjs/typeorm';
import { ResponseService } from './services/response/response.service';
import { PaysModule } from './config/pays/pays.module';
import { ProfilsModule } from './gestion-utilisateurs/profils/profils.module';
import { UtilisateursModule } from './gestion-utilisateurs/utilisateurs/utilisateurs.module';
import { AuthenticationModule } from './gestion-utilisateurs/authentication/authentication.module';
import { ServeStaticModule } from '@nestjs/serve-static';
import { join } from 'path';
import { NotifyService } from './services/notify/notify.service';
import { HttpModule } from '@nestjs/axios';
import { DashboardModule } from './dashboard/dashboard.module';
import { OtpModule } from './gestion-utilisateurs/otp/otp.module';
import { PermissionModule } from './gestion-utilisateurs/permission/permission.module';
import { TypedocumentModule } from './document/typedocument/typedocument.module';
import { ColonnesModule } from './document/colonnes/colonnes.module';
import { DocumentsModule } from './document/documents/documents.module';
import { DownloadfileModule } from './document/downloadfile/downloadfile.module';
import { AgenceModule } from './config/structure/agence/agence.module';
import { BanqueModule } from './config/structure/banque/banque.module';
import { ScheduleModule } from '@nestjs/schedule';

@Module({
  imports: [
    ServeStaticModule.forRoot({
      rootPath: join(__dirname, '..', 'public'), // on sert le dossier public
      serveRoot: '/api', // accessible depuis la racine
    }),
    ConfigModule.forRoot({
    isGlobal: true,
    envFilePath: '.env'
  }),
  TypeOrmModule.forRoot({
    type: 'postgres',
    host: process.env.DATABASE_HOST,
    port: parseInt(process.env.DATABASE_PORT || '5432', 10),
    username: process.env.DATABASE_USERNAME,
    password: process.env.DATABASE_PASSWORD,
    database: process.env.DATABASE_DB,
    entities: [__dirname + '/**/*.entity{.ts,.js}'],
    synchronize: true,
  }),
  PaysModule,
  AgenceModule,
  ProfilsModule,
  UtilisateursModule,
  AuthenticationModule,
  PermissionModule,
  HttpModule,
  DashboardModule,
  OtpModule,
  BanqueModule,
  TypedocumentModule,
  ColonnesModule,
  DocumentsModule,
  DownloadfileModule,
  ScheduleModule.forRoot()
],
  controllers: [AppController],
  providers: [AppService, ResponseService, NotifyService],
})
export class AppModule {}
