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

// Audit-requests own entity
import { AuditRequest } from './entities/audit-request.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';

// Entities from audit-schedules — needed because schedule action writes to them
import { AuditSchedule } from '../audit-schedules/entities/audit-schedule.entity';
import { AuditScheduleRow } from '../audit-schedules/entities/audit-schedule-row.entity';
import { AuditStatusHistory } from '../audit-schedules/entities/audit-status-history.entity';
import { AuditCodeSequence } from '../audit-schedules/entities/audit-code-sequence.entity';

// Services
import { AuditRequestsService } from './services/audit-requests.service';

// Reuse the existing audit code generator from audit-schedules
import { AuditCodeGeneratorService } from '../audit-schedules/services/audit-code-generator.service';

import { AuditRequestsController } from './audit-requests.controller';

// Notification integration — same as audit-schedules
import { NotificationsModule } from '../notifications/notifications.module';
import { MailsModule } from '../mails/mails.module';   // 🆕
// 🆕 Proceed to Inquiry — gives us InquiriesService (exported by InquiriesModule).
// No circular dependency: InquiriesModule does not import AuditRequestsModule.
import { InquiriesModule } from '../inquiries/inquiries.module';

// 🆕 COMPANIES MODULE - to access CompanyResolverService
import { CompaniesModule } from '../companies/companies.module';

@Module({
  imports: [
    TypeOrmModule.forFeature(
      [
        // This module's own entity
        AuditRequest,
        // Existing entities we read from / write to
        AuditSchedule,
        AuditScheduleRow,
        AuditStatusHistory,
        AuditCodeSequence,
        Company,
        CompanyBranch,
        CompanyClientLink,      // ✅ FIXED: Added missing entity
        CompanyChangeLog,       // ✅ FIXED: Added missing entity
        Standard,
        User,
      ],
      'scheme_dbs',
    ),
    NotificationsModule,
    MailsModule,
    InquiriesModule,   // 🆕
    CompaniesModule,   // 🆕 ADDED FOR CompanyResolverService
  ],
  controllers: [AuditRequestsController],
  providers: [
    AuditRequestsService,
    AuditCodeGeneratorService,
  ],
  exports: [AuditRequestsService],
})
export class AuditRequestsModule {}