import { Module, forwardRef } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { LeavesController } from './leaves.controller';
import { LeavesService } from './leaves.service';
import { LeavesScheduler } from './leaves.scheduler';
import { LeavesAcquisitionService } from './leaves-acquisition.service';
import { LeaveRequest } from './entities/leave-request.entity';
import { LeaveBalance } from './entities/leave-balance.entity';
import { LeaveType } from './entities/leave-type.entity';
import { PublicHoliday } from '../holidays/entities/public-holiday.entity';
import { AuditLog } from '../audit/entities/audit-log.entity';
import { User } from '../users/entities/user.entity';
import { AuthModule } from '../auth/auth.module';
import { PlanningModule } from '../planning/planning.module';
import { NotificationsModule } from '../notifications/notifications.module';

@Module({
  imports: [
    TypeOrmModule.forFeature([
      LeaveRequest,
      LeaveBalance,
      LeaveType,
      PublicHoliday,
      User,
      AuditLog,
    ]),
    AuthModule,
    forwardRef(() => PlanningModule),
    NotificationsModule,
  ],
  controllers: [LeavesController],
  providers: [LeavesService, LeavesScheduler, LeavesAcquisitionService],
  exports: [LeavesService, LeavesAcquisitionService],
})
export class LeavesModule {}