mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-27 00:52:50 +00:00
- Added ShippingLineBookingCompletionController and associated service to handle the completion of shipping line bookings. - Introduced a new module for booking completion to maintain module separation and avoid cyclic dependencies. - Updated the train scheduling global rules to set default desk hours to 24 hours. - Modified existing services and entities to accommodate the new booking completion logic. - Enhanced the front-end components to support the new booking completion flow, including updates to the booking detail and bookings pages. - Implemented validation and error handling for booking completion, ensuring that only approved bookings can be completed. - Added migration to set default desk hours in the database.
183 lines
8.4 KiB
TypeScript
183 lines
8.4 KiB
TypeScript
import { Global, Module } from '@nestjs/common';
|
|
import { TypeOrmModule } from '@nestjs/typeorm';
|
|
|
|
import { ApprovalRulesController } from './controllers/approval-rules.controller';
|
|
import { CargoTypesController } from './controllers/cargo-types.controller';
|
|
import { ContainerTypesController } from './controllers/container-types.controller';
|
|
import { PriorityConfigsController } from './controllers/priority-configs.controller';
|
|
import { PriorityRuleChangeRequestsController } from './controllers/priority-rule-change-requests.controller';
|
|
import { RateChangeRequestsController } from './controllers/rate-change-requests.controller';
|
|
import { RatesController } from './controllers/rates.controller';
|
|
import { ServiceTypesController } from './controllers/service-types.controller';
|
|
import { ShippingLinesController } from './controllers/shipping-lines.controller';
|
|
import { WeightLimitRulesController } from './controllers/weight-limit-rules.controller';
|
|
import { YardDistancesController } from './controllers/yard-distances.controller';
|
|
import { YardsController } from './controllers/yards.controller';
|
|
|
|
import { ApprovalRule } from './entities/approval-rule.entity';
|
|
import { CargoType } from './entities/cargo-type.entity';
|
|
import { ContainerType } from './entities/container-type.entity';
|
|
import { PriorityConfig } from './entities/priority-config.entity';
|
|
import { PriorityRuleChangeRequest } from './entities/priority-rule-change-request.entity';
|
|
import { RateChangeRequest } from './entities/rate-change-request.entity';
|
|
import { Rate } from './entities/rate.entity';
|
|
import { ServiceType } from './entities/service-type.entity';
|
|
import { ShippingLine } from './entities/shipping-line.entity';
|
|
import { WeightLimitRule } from './entities/weight-limit-rule.entity';
|
|
import { Yard } from './entities/yard.entity';
|
|
import { YardDistance } from './entities/yard-distance.entity';
|
|
import { YardFacility } from './entities/yard-facility.entity';
|
|
import { YardLocation } from './entities/yard-location.entity';
|
|
|
|
import { APPROVAL_RULES_REPOSITORY } from './interfaces/approval-rules.repository.interface';
|
|
import { CARGO_TYPES_REPOSITORY } from './interfaces/cargo-types.repository.interface';
|
|
import { CONTAINER_TYPES_REPOSITORY } from './interfaces/container-types.repository.interface';
|
|
import { PRIORITY_CONFIGS_REPOSITORY } from './interfaces/priority-configs.repository.interface';
|
|
import { RATES_REPOSITORY } from './interfaces/rates.repository.interface';
|
|
import { SERVICE_TYPES_REPOSITORY } from './interfaces/service-types.repository.interface';
|
|
import { SHIPPING_LINES_REPOSITORY } from './interfaces/shipping-lines.repository.interface';
|
|
import { WEIGHT_LIMIT_RULES_REPOSITORY } from './interfaces/weight-limit-rules.repository.interface';
|
|
import { YARD_DISTANCES_REPOSITORY } from './interfaces/yard-distances.repository.interface';
|
|
import { YARDS_REPOSITORY } from './interfaces/yards.repository.interface';
|
|
|
|
import { ApprovalRulesRepository } from './repositories/approval-rules.repository';
|
|
import { CargoTypesRepository } from './repositories/cargo-types.repository';
|
|
import { ContainerTypesRepository } from './repositories/container-types.repository';
|
|
import { PriorityConfigsRepository } from './repositories/priority-configs.repository';
|
|
import { RatesRepository } from './repositories/rates.repository';
|
|
import { ServiceTypesRepository } from './repositories/service-types.repository';
|
|
import { ShippingLinesRepository } from './repositories/shipping-lines.repository';
|
|
import { WeightLimitRulesRepository } from './repositories/weight-limit-rules.repository';
|
|
import { YardDistancesRepository } from './repositories/yard-distances.repository';
|
|
import { YardsRepository } from './repositories/yards.repository';
|
|
|
|
import { ApprovalRulesService } from './services/approval-rules.service';
|
|
import { DisplayOrderService } from './services/display-order.service';
|
|
import { CargoTypesService } from './services/cargo-types.service';
|
|
import { ContainerTypesService } from './services/container-types.service';
|
|
import { PriorityConfigsService } from './services/priority-configs.service';
|
|
import { PriorityRuleChangeRequestsService } from './services/priority-rule-change-requests.service';
|
|
import { RateChangeRequestsService } from './services/rate-change-requests.service';
|
|
import { RatesService } from './services/rates.service';
|
|
import { ServiceTypesService } from './services/service-types.service';
|
|
import { ShippingLinesService } from './services/shipping-lines.service';
|
|
import { WeightLimitRulesService } from './services/weight-limit-rules.service';
|
|
import { YardsService } from './services/yards.service';
|
|
import { YardDistancesService } from './services/yard-distances.service';
|
|
import { YardFacilitiesService } from './services/yard-facilities.service';
|
|
|
|
import { RuleEngineService } from './rule-engine.service';
|
|
|
|
import { NotificationInboxModule } from '../notification-inbox/notification-inbox.module';
|
|
import { ShippingLineCompaniesModule } from '../shipping-lines/shipping-line-companies.module';
|
|
import { WagonTypesModule } from '../wagon-types/wagon-types.module';
|
|
|
|
import { BookingCargoModifier } from '../bookings/entities/booking-cargo-modifier.entity';
|
|
import { BookingContainer } from '../bookings/entities/booking-container.entity';
|
|
import { BookingRateSnapshot } from '../bookings/entities/booking-rate-snapshot.entity';
|
|
|
|
@Global()
|
|
@Module({
|
|
imports: [
|
|
TypeOrmModule.forFeature([
|
|
CargoType,
|
|
ContainerType,
|
|
PriorityConfig,
|
|
PriorityRuleChangeRequest,
|
|
RateChangeRequest,
|
|
ServiceType,
|
|
WeightLimitRule,
|
|
Yard,
|
|
YardDistance,
|
|
YardFacility,
|
|
YardLocation,
|
|
ShippingLine,
|
|
Rate,
|
|
ApprovalRule,
|
|
BookingContainer,
|
|
BookingCargoModifier,
|
|
BookingRateSnapshot,
|
|
]),
|
|
// Team notifications for the priority-rule approval workflow.
|
|
NotificationInboxModule,
|
|
// Rated wagon capacities — cargo types validate their per-wagon tonnage cap
|
|
// against them (a cap above the rating is a typo, not a policy).
|
|
WagonTypesModule,
|
|
// Rates may be scoped to one shipping line; creating such a rate validates
|
|
// the line exists and is active.
|
|
ShippingLineCompaniesModule,
|
|
],
|
|
controllers: [
|
|
CargoTypesController,
|
|
ContainerTypesController,
|
|
PriorityConfigsController,
|
|
PriorityRuleChangeRequestsController,
|
|
RateChangeRequestsController,
|
|
ServiceTypesController,
|
|
WeightLimitRulesController,
|
|
YardsController,
|
|
YardDistancesController,
|
|
ShippingLinesController,
|
|
RatesController,
|
|
ApprovalRulesController,
|
|
],
|
|
providers: [
|
|
CargoTypesRepository,
|
|
{ provide: CARGO_TYPES_REPOSITORY, useExisting: CargoTypesRepository },
|
|
ContainerTypesRepository,
|
|
{ provide: CONTAINER_TYPES_REPOSITORY, useExisting: ContainerTypesRepository },
|
|
PriorityConfigsRepository,
|
|
{ provide: PRIORITY_CONFIGS_REPOSITORY, useExisting: PriorityConfigsRepository },
|
|
ServiceTypesRepository,
|
|
{ provide: SERVICE_TYPES_REPOSITORY, useExisting: ServiceTypesRepository },
|
|
WeightLimitRulesRepository,
|
|
{ provide: WEIGHT_LIMIT_RULES_REPOSITORY, useExisting: WeightLimitRulesRepository },
|
|
YardsRepository,
|
|
{ provide: YARDS_REPOSITORY, useExisting: YardsRepository },
|
|
YardDistancesRepository,
|
|
{ provide: YARD_DISTANCES_REPOSITORY, useExisting: YardDistancesRepository },
|
|
ShippingLinesRepository,
|
|
{ provide: SHIPPING_LINES_REPOSITORY, useExisting: ShippingLinesRepository },
|
|
RatesRepository,
|
|
{ provide: RATES_REPOSITORY, useExisting: RatesRepository },
|
|
ApprovalRulesRepository,
|
|
{ provide: APPROVAL_RULES_REPOSITORY, useExisting: ApprovalRulesRepository },
|
|
CargoTypesService,
|
|
ContainerTypesService,
|
|
PriorityConfigsService,
|
|
PriorityRuleChangeRequestsService,
|
|
RateChangeRequestsService,
|
|
ServiceTypesService,
|
|
WeightLimitRulesService,
|
|
YardsService,
|
|
YardDistancesService,
|
|
YardFacilitiesService,
|
|
ShippingLinesService,
|
|
RatesService,
|
|
ApprovalRulesService,
|
|
DisplayOrderService,
|
|
RuleEngineService,
|
|
],
|
|
exports: [
|
|
RuleEngineService,
|
|
CargoTypesService,
|
|
ServiceTypesService,
|
|
ContainerTypesService,
|
|
WeightLimitRulesService,
|
|
PriorityConfigsService,
|
|
YardsService,
|
|
YardDistancesService,
|
|
YardFacilitiesService,
|
|
ShippingLinesService,
|
|
RatesService,
|
|
ApprovalRulesService,
|
|
CARGO_TYPES_REPOSITORY,
|
|
CONTAINER_TYPES_REPOSITORY,
|
|
SERVICE_TYPES_REPOSITORY,
|
|
SHIPPING_LINES_REPOSITORY,
|
|
YARDS_REPOSITORY,
|
|
YARD_DISTANCES_REPOSITORY,
|
|
],
|
|
})
|
|
export class RuleEngineModule {}
|