import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AuthModule } from '../../auth/auth.module';
import { TransportPricingController } from './transport-pricing.controller';
import { TransportPricingService } from './transport-pricing.service';
import { TransportPricingRepository } from './repositories/transport-pricing.repository';
import { TransportPricingEntity } from '../../entities/transport-pricing.entity';
import { RolePermissionEntity } from '../../entities/role-permission.entity';
import { CurrencyEntity } from '../../entities/currency.entity';
import { PermissionContextService } from '../../common/auth/permission-context.service';
import { TaxTypeModule } from '../tax-type/tax-type.module';

@Module({
  imports: [
    TypeOrmModule.forFeature([TransportPricingEntity, RolePermissionEntity, CurrencyEntity]),
    AuthModule,
    // Brings TaxSlabResolverService into scope — service uses it to
    // resolve the destination+service slab on each save and bifurcate
    // the inclusive *_price values into *_base_price + *_tax_amount.
    TaxTypeModule,
  ],
  controllers: [TransportPricingController],
  providers: [TransportPricingService, TransportPricingRepository, PermissionContextService],
  exports: [TransportPricingService],
})
export class TransportPricingModule {}
