import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AuthModule } from '../../auth/auth.module';
import { ActivityPricingController } from './activity-pricing.controller';
import { ActivityPricingService } from './activity-pricing.service';
import { ActivityPricingRepository } from './repositories/activity-pricing.repository';
import { ActivityPricingEntity } from '../../entities/activity-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([ActivityPricingEntity, RolePermissionEntity, CurrencyEntity]),
    AuthModule,
    // Resolver lives here — service uses it to resolve the
    // activity+destination slab on every save and bifurcate the
    // inclusive *_price values into *_base_price + *_tax_amount.
    TaxTypeModule,
  ],
  controllers: [ActivityPricingController],
  providers: [ActivityPricingService, ActivityPricingRepository, PermissionContextService],
  exports: [ActivityPricingService],
})
export class ActivityPricingModule {}
