import { CryptoModule } from '@lib/crypto/src/crypto.module';
import { ExcelModule } from '@lib/excel/src';
import { Module } from '@nestjs/common';
import { ClinicalResultModule } from '../clinical-result/clinical-result.module';
import { DiseaseModule } from '../disease/disease.module';
import { MedicationStandardModule } from '../medication-standard/medication-standard.module';
import { OrderDetailModule } from '../order/order-detail/order-detail.module';
import { UserModule } from '../user/user.module';
import { AdminViewTokenModule } from '../admin-view-token/admin-view-token.module';
import { AdminViewAnalyzeController } from './analyze-admin-view.controller';
import { AdminAnalyzeController } from './analyze-admin.controller';
import {
  AnalyzeController,
  B2cAnalyzeController,
  B2cAnalyzeExtController,
  B2cUserController,
} from './analyze.controller';
import { AnalyzeRepository } from './analyze.repository';
import { AnalyzeService } from './analyze.service';
import { CarViewAdminGuard } from '../auth/admin/car-view-admin.guard';
import { OwnAnalysisGuard } from '../auth/user/own-analysis.guard';

@Module({
  imports: [
    CryptoModule,
    OrderDetailModule,
    DiseaseModule,
    MedicationStandardModule,
    ClinicalResultModule,
    ExcelModule,
    UserModule,
    AdminViewTokenModule,
  ],
  controllers: [
    AnalyzeController,
    AdminAnalyzeController,
    AdminViewAnalyzeController,
    B2cAnalyzeController,
    B2cAnalyzeExtController,
    B2cUserController,
  ],
  providers: [
    AnalyzeService,
    AnalyzeRepository,
    CarViewAdminGuard,
    OwnAnalysisGuard,
  ],
  exports: [AnalyzeService, AnalyzeRepository, CarViewAdminGuard],
})
export class AnalyzeModule {}
