import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AuthModule } from '../../auth/auth.module';
import { AuditModule } from '../audit/audit.module';
import { QueryController } from './query.controller';
import { QueryService } from './query.service';
import { QueryRepository } from './repositories/query.repository';
import { QuoteController, QuotePriceLookupController } from './quote.controller';
import { QuoteService } from './quote.service';
import { QuoteRepository } from './repositories/quote.repository';
import { QueryEntity } from '../../entities/query.entity';
import { QueryQuoteEntity } from '../../entities/query-quote.entity';
import { QueryQuoteHotelEntity } from '../../entities/query-quote-hotel.entity';
import { QueryQuoteTransportEntity } from '../../entities/query-quote-transport.entity';
import { QueryQuoteActivityEntity } from '../../entities/query-quote-activity.entity';
import { QueryQuoteSpecialEntity } from '../../entities/query-quote-special.entity';
import { TransportPricingEntity } from '../../entities/transport-pricing.entity';
import { ActivityPricingEntity } from '../../entities/activity-pricing.entity';
import { SeasonEntity } from '../../entities/season.entity';
import { ExchangeRateEntity } from '../../entities/exchange-rate.entity';

@Module({
  imports: [
    TypeOrmModule.forFeature([
      QueryEntity,
      QueryQuoteEntity,
      QueryQuoteHotelEntity,
      QueryQuoteTransportEntity,
      QueryQuoteActivityEntity,
      QueryQuoteSpecialEntity,
      TransportPricingEntity,
      ActivityPricingEntity,
      SeasonEntity,
      ExchangeRateEntity,
    ]),
    AuthModule,
    AuditModule,
  ],
  controllers: [QueryController, QuoteController, QuotePriceLookupController],
  providers: [QueryService, QueryRepository, QuoteService, QuoteRepository],
  exports: [QueryService, QueryRepository, QuoteService],
})
export class QueryModule {}
