import { Module, forwardRef } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { ProgramAccessController } from './program-access.controller';
import { ProgramAccessService } from './program-access.service';
import { ProgramAccessRepository } from './program-access.repository';
import { ProgramAccessUserMap } from 'src/common/entities/program-access-user-map.entity';
import { Program, User, ProgramRegistration } from 'src/common/entities';
import { AuthModule } from 'src/auth/auth.module';
import { CommonDataService } from 'src/common/services/commonData.service';
import { AppLoggerService } from 'src/common/services/logger.service';
import { ResponseService } from 'src/common/response-handling/response-handler';
import { UserModule } from 'src/user/user.module';

@Module({
  imports: [
    TypeOrmModule.forFeature([ProgramAccessUserMap, Program, User, ProgramRegistration]),
    forwardRef(() => AuthModule),
    forwardRef(() => UserModule),
  ],
  controllers: [ProgramAccessController],
  providers: [
    ProgramAccessService,
    ProgramAccessRepository,
    CommonDataService,
    AppLoggerService,
    ResponseService,
  ],
  exports: [ProgramAccessService, ProgramAccessRepository],
})
export class ProgramAccessModule {}
