78 lines
3.0 KiB
TypeScript
78 lines
3.0 KiB
TypeScript
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 {}
|