Some checks failed
CI/CD Pipeline - Xpeditis PreProd / Backend - Build & Test (push) Failing after 5m53s
CI/CD Pipeline - Xpeditis PreProd / Backend - Docker Build & Push (push) Has been skipped
CI/CD Pipeline - Xpeditis PreProd / Frontend - Build & Test (push) Successful in 10m59s
CI/CD Pipeline - Xpeditis PreProd / Frontend - Docker Build & Push (push) Failing after 9m47s
CI/CD Pipeline - Xpeditis PreProd / Deploy to PreProd Server (push) Has been skipped
CI/CD Pipeline - Xpeditis PreProd / Run Smoke Tests (push) Has been skipped
80 lines
2.9 KiB
TypeScript
80 lines
2.9 KiB
TypeScript
import { Module } from '@nestjs/common';
|
|
import { TypeOrmModule } from '@nestjs/typeorm';
|
|
import { BookingsController } from '../controllers/bookings.controller';
|
|
|
|
// Import domain ports
|
|
import { BOOKING_REPOSITORY } from '@domain/ports/out/booking.repository';
|
|
import { RATE_QUOTE_REPOSITORY } from '@domain/ports/out/rate-quote.repository';
|
|
import { USER_REPOSITORY } from '@domain/ports/out/user.repository';
|
|
import { TypeOrmBookingRepository } from '../../infrastructure/persistence/typeorm/repositories/typeorm-booking.repository';
|
|
import { TypeOrmRateQuoteRepository } from '../../infrastructure/persistence/typeorm/repositories/typeorm-rate-quote.repository';
|
|
import { TypeOrmUserRepository } from '../../infrastructure/persistence/typeorm/repositories/typeorm-user.repository';
|
|
|
|
// Import ORM entities
|
|
import { BookingOrmEntity } from '../../infrastructure/persistence/typeorm/entities/booking.orm-entity';
|
|
import { ContainerOrmEntity } from '../../infrastructure/persistence/typeorm/entities/container.orm-entity';
|
|
import { RateQuoteOrmEntity } from '../../infrastructure/persistence/typeorm/entities/rate-quote.orm-entity';
|
|
import { UserOrmEntity } from '../../infrastructure/persistence/typeorm/entities/user.orm-entity';
|
|
|
|
// Import services and domain
|
|
import { BookingService } from '../../domain/services/booking.service';
|
|
import { BookingAutomationService } from '../services/booking-automation.service';
|
|
import { ExportService } from '../services/export.service';
|
|
import { FuzzySearchService } from '../services/fuzzy-search.service';
|
|
|
|
// Import infrastructure modules
|
|
import { EmailModule } from '../../infrastructure/email/email.module';
|
|
import { PdfModule } from '../../infrastructure/pdf/pdf.module';
|
|
import { StorageModule } from '../../infrastructure/storage/storage.module';
|
|
import { AuditModule } from '../audit/audit.module';
|
|
import { NotificationsModule } from '../notifications/notifications.module';
|
|
import { WebhooksModule } from '../webhooks/webhooks.module';
|
|
|
|
/**
|
|
* Bookings Module
|
|
*
|
|
* Handles booking management functionality:
|
|
* - Create bookings from rate quotes
|
|
* - View booking details
|
|
* - List user/organization bookings
|
|
* - Update booking status
|
|
* - Post-booking automation (emails, PDFs)
|
|
*/
|
|
@Module({
|
|
imports: [
|
|
TypeOrmModule.forFeature([
|
|
BookingOrmEntity,
|
|
ContainerOrmEntity,
|
|
RateQuoteOrmEntity,
|
|
UserOrmEntity,
|
|
]),
|
|
EmailModule,
|
|
PdfModule,
|
|
StorageModule,
|
|
AuditModule,
|
|
NotificationsModule,
|
|
WebhooksModule,
|
|
],
|
|
controllers: [BookingsController],
|
|
providers: [
|
|
BookingService,
|
|
BookingAutomationService,
|
|
ExportService,
|
|
FuzzySearchService,
|
|
{
|
|
provide: BOOKING_REPOSITORY,
|
|
useClass: TypeOrmBookingRepository,
|
|
},
|
|
{
|
|
provide: RATE_QUOTE_REPOSITORY,
|
|
useClass: TypeOrmRateQuoteRepository,
|
|
},
|
|
{
|
|
provide: USER_REPOSITORY,
|
|
useClass: TypeOrmUserRepository,
|
|
},
|
|
],
|
|
exports: [BOOKING_REPOSITORY],
|
|
})
|
|
export class BookingsModule {}
|