import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { ConfigModule } from '@nestjs/config'; import { CsvBookingsController } from './controllers/csv-bookings.controller'; import { CsvBookingActionsController } from './controllers/csv-booking-actions.controller'; import { CsvBookingService } from './services/csv-booking.service'; import { CsvBookingOrmEntity } from '../infrastructure/persistence/typeorm/entities/csv-booking.orm-entity'; import { TypeOrmCsvBookingRepository } from '../infrastructure/persistence/typeorm/repositories/csv-booking.repository'; import { TypeOrmShipmentCounterRepository } from '../infrastructure/persistence/typeorm/repositories/shipment-counter.repository'; import { SHIPMENT_COUNTER_PORT } from '@domain/ports/out/shipment-counter.port'; import { NotificationsModule } from './notifications/notifications.module'; import { EmailModule } from '../infrastructure/email/email.module'; import { StorageModule } from '../infrastructure/storage/storage.module'; import { SubscriptionsModule } from './subscriptions/subscriptions.module'; import { StripeModule } from '../infrastructure/stripe/stripe.module'; /** * CSV Bookings Module * * Handles CSV-based booking workflow with carrier email confirmations */ @Module({ imports: [ TypeOrmModule.forFeature([CsvBookingOrmEntity]), ConfigModule, NotificationsModule, EmailModule, StorageModule, SubscriptionsModule, StripeModule, ], controllers: [CsvBookingsController, CsvBookingActionsController], providers: [ CsvBookingService, TypeOrmCsvBookingRepository, { provide: SHIPMENT_COUNTER_PORT, useClass: TypeOrmShipmentCounterRepository, }, ], exports: [CsvBookingService, TypeOrmCsvBookingRepository], }) export class CsvBookingsModule {}