import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';

// Audit-schedule own entities
import { AuditSchedule } from './entities/audit-schedule.entity';
import { AuditScheduleRow } from './entities/audit-schedule-row.entity';
import { AuditCodeSequence } from './entities/audit-code-sequence.entity';
import { AuditStatusHistory } from './entities/audit-status-history.entity';

// External entities referenced via relations + service queries.
import { Company } from '../companies/entities/company.entity';
import { CompanyBranch } from '../companies/entities/company-branch.entity';
import { CompanyClientLink } from '../companies/entities/company-client-link.entity';
import { CompanyChangeLog } from '../companies/entities/company-change-log.entity';
import { Standard } from '../standards/entities/standard.entity';
import { User } from '../user/entities/user.entity';

import { AuditSchedulesService } from './services/audit-schedules.service';
import { AuditCodeGeneratorService } from './services/audit-code-generator.service';
import { AuditSchedulesController } from './audit-schedules.controller';
import { MyAuditsController } from './my-audits.controller';

// 🆕 Notification integration
import { NotificationsModule } from '../notifications/notifications.module';
import { MailsModule } from '../mails/mails.module';   // 🆕
import { AuditReportStorageService } from './services/audit-report-storage.service';   // 🆕


@Module({
  imports: [
    TypeOrmModule.forFeature(
      [
        AuditSchedule,
        AuditScheduleRow,
        AuditCodeSequence,
        AuditStatusHistory,
        Company,
        CompanyBranch,           // ✅ ADDED: Required for Company relationships
        CompanyClientLink,       // ✅ PRESENT: Required for Company relationships
        CompanyChangeLog,        // ✅ PRESENT: Required for Company relationships
        Standard,
        User,
      ],
      'scheme_dbs',
    ),
    NotificationsModule,
    MailsModule,
  ],
  controllers: [AuditSchedulesController, MyAuditsController],
  providers: [AuditSchedulesService, AuditCodeGeneratorService, AuditReportStorageService],
  exports: [AuditSchedulesService],
})
export class AuditSchedulesModule { }