import { Module, forwardRef } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { ProgramTemplate } from 'src/common/entities/program-template.entity';
import { TemplateFormSection } from 'src/common/entities/template-form-section.entity';
import { TemplateQuestion } from 'src/common/entities/template-question.entity';
import { ProgramType } from 'src/common/entities/program-type.entity';
import { ProgramTemplateController } from './program-template.controller';
import { ProgramTemplateService } from './program-template.service';
import { ProgramTemplateRepository } from './program-template.repository';
import { TemplateQuestionRepository } from 'src/template-question/template-question.repository';
import { CommonDataService } from 'src/common/services/commonData.service';
import { ResponseService } from 'src/common/response-handling/response-handler';
import { AppLoggerService } from 'src/common/services/logger.service';
import { AuthModule } from 'src/auth/auth.module';
import { UserModule } from 'src/user/user.module';
import { TemplateFormSectionModule } from 'src/template-form-section/template-form-section.module';

@Module({
  imports: [
    TypeOrmModule.forFeature([
      ProgramTemplate, 
      TemplateFormSection,
      TemplateQuestion,
      ProgramType
    ]),
    forwardRef(() => AuthModule),
    forwardRef(() => UserModule),
    forwardRef(() => TemplateFormSectionModule),
  ],
  controllers: [ProgramTemplateController],
  providers: [
    ProgramTemplateService,
    ProgramTemplateRepository,
    TemplateQuestionRepository,
    CommonDataService,
    ResponseService,
    AppLoggerService,
  ],
  exports: [ProgramTemplateService, ProgramTemplateRepository],
})
export class ProgramTemplateModule {}
