import { BadRequestException, Module, ValidationPipe } from '@nestjs/common'; import { AppController } from './app.controller'; import { AppService } from './app.service'; import { ArchivalModule } from './modules/archival/archival.module'; import { AuthenticationModule } from './modules/authentication/auth.module'; import { BankCodesModule } from './modules/bank-codes/bank-codes.module'; import { BusinessLogicsModule } from './modules/business-logics/business-logics.module'; // import { CsvExportModule } from './modules/exports/csv-exports.module'; import { CustomersModule } from './modules/customers/customers.module'; import { EmployeesModule } from './modules/employees/employees.module'; import { ExpensesModule } from './modules/expenses/expenses.module'; import { HealthModule } from './health/health.module'; import { HealthController } from './health/health.controller'; import { LeaveRequestsModule } from './modules/leave-requests/leave-requests.module'; import { NotificationsModule } from './modules/notifications/notifications.module'; import { OauthSessionsModule } from './modules/oauth-sessions/oauth-sessions.module'; import { OvertimeService } from './modules/business-logics/services/overtime.service'; import { PayperiodsModule } from './modules/pay-periods/pay-periods.module'; import { PrismaModule } from './prisma/prisma.module'; import { ScheduleModule } from '@nestjs/schedule'; import { ShiftsModule } from './modules/shifts/shifts.module'; import { TimesheetsModule } from './modules/timesheets/timesheets.module'; import { UsersModule } from './modules/users-management/users.module'; import { ConfigModule } from '@nestjs/config'; import { APP_FILTER, APP_PIPE } from '@nestjs/core'; import { HttpExceptionFilter } from './common/filters/http-exception.filter'; import { ValidationError } from 'class-validator'; @Module({ imports: [ ArchivalModule, AuthenticationModule, BankCodesModule, BusinessLogicsModule, ConfigModule.forRoot({isGlobal: true}), // CsvExportModule, CustomersModule, EmployeesModule, ExpensesModule, HealthModule, LeaveRequestsModule, NotificationsModule, OauthSessionsModule, PayperiodsModule, PrismaModule, ScheduleModule.forRoot(), ShiftsModule, TimesheetsModule, UsersModule, ], controllers: [AppController, HealthController], providers: [ AppService, OvertimeService, { provide: APP_FILTER, useClass: HttpExceptionFilter }, { provide: APP_PIPE, useValue: new ValidationPipe({ whitelist: true, forbidNonWhitelisted: true, transform: true, exceptionFactory: (errors: ValidationError[] = [])=> { const messages = errors.flatMap((e)=> Object.values(e.constraints ?? {})); return new BadRequestException({ statusCode: 400, error: 'Bad Request', message: messages.length ? messages : errors, }); }, }), }, ], }) export class AppModule {}