From 88b995d3d7fd7bff99bd3fc8e21e64bb7592e17b Mon Sep 17 00:00:00 2001 From: Marshal Date: Sat, 8 Aug 2026 14:22:38 +0000 Subject: [PATCH] fix issue --- .../booking-wagon-cancellation.service.ts | 2 +- .../src/modules/bookings/bookings.service.ts | 2 +- .../contracts/contract-booking.service.ts | 2 +- .../scheduling-reschedule.service.ts | 6 +- .../train-scheduling/booking-batch.service.ts | 4 +- .../booking-window.service.ts | 2 +- .../container-placement.util.ts | 2 +- .../train-scheduling.controller.ts | 98 +++++------- .../gatepass-payment-gate.spec.ts | 2 +- .../services/train-scheduling.service.spec.ts | 9 +- .../services/train-scheduling.service.ts | 148 ++++++------------ .../train-scheduling.module.ts | 12 +- .../utils/derive-schedule-direction.util.ts | 2 +- .../train-scheduling/utils/fleet-plan.util.ts | 7 +- .../train-scheduling/utils/wagon-plan.util.ts | 13 +- .../wagon-plan-flex.util.spec.ts | 2 +- .../train-scheduling/wagon-plan-flex.util.ts | 4 +- 17 files changed, 110 insertions(+), 207 deletions(-) diff --git a/apps/edr-freight-api/src/modules/bookings/booking-wagon-cancellation.service.ts b/apps/edr-freight-api/src/modules/bookings/booking-wagon-cancellation.service.ts index 198342cc8..b62fdfca0 100644 --- a/apps/edr-freight-api/src/modules/bookings/booking-wagon-cancellation.service.ts +++ b/apps/edr-freight-api/src/modules/bookings/booking-wagon-cancellation.service.ts @@ -20,7 +20,7 @@ import { NotificationInboxService } from '../notification-inbox/notification-inb import { wagonsPerUnitForSize } from '../rule-engine/container-type.util'; import { Rate } from '../rule-engine/entities/rate.entity'; import { BookingBatchService } from '../train-scheduling/booking-batch.service'; -import { TrainSchedulingService } from '../train-scheduling/train-scheduling.service'; +import { TrainSchedulingService } from '../train-scheduling/services/train-scheduling.service'; import { WagonAllocationBulkLoad } from '../train-schedules/entities/wagon-allocation-bulk-load.entity'; import { WagonAllocationContainerItem } from '../train-schedules/entities/wagon-allocation-container-item.entity'; import { WagonBookingAllocation } from '../train-schedules/entities/wagon-booking-allocation.entity'; diff --git a/apps/edr-freight-api/src/modules/bookings/bookings.service.ts b/apps/edr-freight-api/src/modules/bookings/bookings.service.ts index 15799f000..27460b923 100644 --- a/apps/edr-freight-api/src/modules/bookings/bookings.service.ts +++ b/apps/edr-freight-api/src/modules/bookings/bookings.service.ts @@ -13,7 +13,7 @@ import { insertWithGeneratedReference } from '@edr/api-common'; // import { CustomersService } from '../customers/customers.service'; import { CompaniesService } from '../companies/companies.service'; import { CompanyKind, CompanyStatus } from '../companies/entities/company.entity'; -import { TrainSchedulingService } from '../train-scheduling/train-scheduling.service'; +import { TrainSchedulingService } from '../train-scheduling/services/train-scheduling.service'; import { eatDay } from '../train-scheduling/batch-window.util'; import { FilesService } from '../files/files.service'; import { MinioService } from '../minio/minio.service'; diff --git a/apps/edr-freight-api/src/modules/contracts/contract-booking.service.ts b/apps/edr-freight-api/src/modules/contracts/contract-booking.service.ts index 59afdb585..441544b39 100644 --- a/apps/edr-freight-api/src/modules/contracts/contract-booking.service.ts +++ b/apps/edr-freight-api/src/modules/contracts/contract-booking.service.ts @@ -24,7 +24,7 @@ import { PriceLineItemDto } from '../bookings/dto/generate-price-response.dto'; import { BookingInvoiceService } from '../bookings/booking-invoice.service'; import { validate20ftWeightPairing } from '../bookings/container-pairing.util'; import { TrainSchedulingGlobalRules } from '../train-scheduling/entities/train-scheduling-global-rules.entity'; -import { TrainSchedulingService } from '../train-scheduling/train-scheduling.service'; +import { TrainSchedulingService } from '../train-scheduling/services/train-scheduling.service'; import { BookingBatchService } from '../train-scheduling/booking-batch.service'; import { eatDay } from '../train-scheduling/batch-window.util'; import { wagonsPerUnitForSize } from '../rule-engine/container-type.util'; diff --git a/apps/edr-freight-api/src/modules/scheduling-reschedule/scheduling-reschedule.service.ts b/apps/edr-freight-api/src/modules/scheduling-reschedule/scheduling-reschedule.service.ts index 61cbbed7f..7283c874a 100644 --- a/apps/edr-freight-api/src/modules/scheduling-reschedule/scheduling-reschedule.service.ts +++ b/apps/edr-freight-api/src/modules/scheduling-reschedule/scheduling-reschedule.service.ts @@ -11,12 +11,8 @@ import { Booking } from '../bookings/entities/booking.entity'; import { BookingsRepository } from '../bookings/bookings.repository'; import { compareSchedulingPriority } from '../scheduling/compare-scheduling-priority.util'; import { TrainSchedulesRepository } from '../train-schedules/train-schedules.repository'; -<<<<<<< Updated upstream -import { TrainSchedulingService } from '../train-scheduling/train-scheduling.service'; -import { BookingNotifierService } from '../train-scheduling/booking-notifier.service'; -======= import { TrainSchedulingService } from '../train-scheduling/services/train-scheduling.service'; ->>>>>>> Stashed changes +import { BookingNotifierService } from '../train-scheduling/booking-notifier.service'; import { ExecuteRescheduleDto, PreviewRescheduleDto } from './dto/preview-reschedule.dto'; import { MaintenanceRescheduleDto } from './dto/maintenance-reschedule.dto'; import { SchedulingRescheduleRepository } from './scheduling-reschedule.repository'; diff --git a/apps/edr-freight-api/src/modules/train-scheduling/booking-batch.service.ts b/apps/edr-freight-api/src/modules/train-scheduling/booking-batch.service.ts index e89c56b2a..23024bfdf 100644 --- a/apps/edr-freight-api/src/modules/train-scheduling/booking-batch.service.ts +++ b/apps/edr-freight-api/src/modules/train-scheduling/booking-batch.service.ts @@ -37,7 +37,7 @@ import { BookingNotifierService } from './booking-notifier.service'; import { TrainSchedulingService, effectiveWindowConfig, -} from './train-scheduling.service'; +} from './services/train-scheduling.service'; import { eatDay, listConfigBookingWindows } from './batch-window.util'; import { BATCH_BOARD_STATUSES, @@ -90,7 +90,7 @@ import { BookingWindowGateway } from './booking-window.gateway'; import { MAX_TEU_SLOTS_PER_WAGON, containerWagonsForLines, -} from './wagon-plan.util'; +} from './utils/wagon-plan.util'; import { Capacity, CorridorBudget, diff --git a/apps/edr-freight-api/src/modules/train-scheduling/booking-window.service.ts b/apps/edr-freight-api/src/modules/train-scheduling/booking-window.service.ts index 9eb6c0bf0..5036b01c1 100644 --- a/apps/edr-freight-api/src/modules/train-scheduling/booking-window.service.ts +++ b/apps/edr-freight-api/src/modules/train-scheduling/booking-window.service.ts @@ -19,7 +19,7 @@ import { } from '../notifications/resolve-company-phone.util'; import { BookingBatchService } from './booking-batch.service'; import { BookingWindowGateway } from './booking-window.gateway'; -import { TrainSchedulingService, effectiveWindowConfig } from './train-scheduling.service'; +import { TrainSchedulingService, effectiveWindowConfig } from './services/train-scheduling.service'; import { BATCH_TIMEZONE } from './booking-batch.constants'; import { bookingCloseCutoff, diff --git a/apps/edr-freight-api/src/modules/train-scheduling/container-placement.util.ts b/apps/edr-freight-api/src/modules/train-scheduling/container-placement.util.ts index 72ee1407e..bbfaedaf0 100644 --- a/apps/edr-freight-api/src/modules/train-scheduling/container-placement.util.ts +++ b/apps/edr-freight-api/src/modules/train-scheduling/container-placement.util.ts @@ -1,4 +1,4 @@ -import type { ContainerPlacementInput } from './wagon-plan.util'; +import type { ContainerPlacementInput } from './utils/wagon-plan.util'; export type ContainerUnitForPlacement = { bookingId: string; diff --git a/apps/edr-freight-api/src/modules/train-scheduling/controllers/train-scheduling.controller.ts b/apps/edr-freight-api/src/modules/train-scheduling/controllers/train-scheduling.controller.ts index 3aa8f546e..c87d118c8 100644 --- a/apps/edr-freight-api/src/modules/train-scheduling/controllers/train-scheduling.controller.ts +++ b/apps/edr-freight-api/src/modules/train-scheduling/controllers/train-scheduling.controller.ts @@ -1,8 +1,8 @@ import { ApiBearerAuth, ApiOperation, ApiTags } from "@nestjs/swagger"; import type { Response } from "express"; -import type { AuthUserPayload } from "../../common/resolve-auth-user-id"; -import { UserTradeAccessService } from "../user-trade-access/user-trade-access.service"; -import { resolveAuthUserId } from "../../common/resolve-auth-user-id"; +import type { AuthUserPayload } from "../../../common/resolve-auth-user-id"; +import { UserTradeAccessService } from "../../user-trade-access/user-trade-access.service"; +import { resolveAuthUserId } from "../../../common/resolve-auth-user-id"; import { Body, Controller, Delete, Get, Param, ParseUUIDPipe, Patch, Post, Query, Res, @@ -19,66 +19,48 @@ import { TrainSchedulingRulesManage, TrainSchedulingUpdate, TrainSchedulingView, -} from "../../common/booking-guards"; -import { FREIGHT_PERMS } from "../../seed/freight-permissions.registry"; -import { AcceptIntercityBookingsDto } from "./dto/accept-intercity-bookings.dto"; -import { AssignBookingsDto } from "./dto/assign-bookings.dto"; -import { AssignUnassignedBookingDto } from "./dto/assign-unassigned-booking.dto"; -import { SwitchGovernmentBookingDto } from "./dto/switch-government-booking.dto"; -import { CreateContainerTrainScheduleDto } from "./dto/create-container-train-schedule.dto"; -import { GetEligibleBookingsDto } from "./dto/get-eligible-bookings.dto"; -import { GetEligibleBulkBookingsDto } from "./dto/get-eligible-bulk-bookings.dto"; -import { GetEligibleContainerBookingsDto } from "./dto/get-eligible-container-bookings.dto"; -import { PinWagonsDto } from "./dto/pin-wagons.dto"; -import { MoveWagonLoadDto } from "./dto/move-wagon-load.dto"; -import { UpdateContainerItemDto } from "./dto/update-container-item.dto"; -import { UpdateImportLoadingStatusDto } from "./dto/update-import-loading-status.dto"; -import { PreviewBulkTrainScheduleDto } from "./dto/preview-bulk-train-schedule.dto"; -import { PreviewContainerTrainScheduleDto } from "./dto/preview-container-train-schedule.dto"; -import { PreviewTrainScheduleDto } from "./dto/preview-train-schedule.dto"; -import { RecordCheckpointDto } from "./dto/record-checkpoint.dto"; +} from "../../../common/booking-guards"; +import { FREIGHT_PERMS } from "../../../seed/freight-permissions.registry"; +import { AcceptIntercityBookingsDto } from "../dto/accept-intercity-bookings.dto"; +import { AssignBookingsDto } from "../dto/assign-bookings.dto"; +import { AssignUnassignedBookingDto } from "../dto/assign-unassigned-booking.dto"; +import { SwitchGovernmentBookingDto } from "../dto/switch-government-booking.dto"; +import { CreateContainerTrainScheduleDto } from "../dto/create-container-train-schedule.dto"; +import { GetEligibleBookingsDto } from "../dto/get-eligible-bookings.dto"; +import { GetEligibleBulkBookingsDto } from "../dto/get-eligible-bulk-bookings.dto"; +import { GetEligibleContainerBookingsDto } from "../dto/get-eligible-container-bookings.dto"; +import { PinWagonsDto } from "../dto/pin-wagons.dto"; +import { MoveWagonLoadDto } from "../dto/move-wagon-load.dto"; +import { UpdateContainerItemDto } from "../dto/update-container-item.dto"; +import { UpdateImportLoadingStatusDto } from "../dto/update-import-loading-status.dto"; +import { PreviewBulkTrainScheduleDto } from "../dto/preview-bulk-train-schedule.dto"; +import { PreviewContainerTrainScheduleDto } from "../dto/preview-container-train-schedule.dto"; +import { PreviewTrainScheduleDto } from "../dto/preview-train-schedule.dto"; +import { RecordCheckpointDto } from "../dto/record-checkpoint.dto"; import { ImportDjiboutiActionDto, UploadImportDjiboutiDocumentDto, -} from "./dto/import-djibouti-operation.dto"; -import { AvailableLocomotivesQueryDto } from "./dto/available-locomotives-query.dto"; -import { AdjustScheduleConsistDto } from "./dto/adjust-schedule-consist.dto"; -import { AvailableTrainsQueryDto } from "./dto/available-trains-query.dto"; -import { BatchBoardQueryDto } from "./dto/batch-board-query.dto"; -import { BookableSchedulesQueryDto } from "./dto/bookable-schedules-query.dto"; -import { ListTrainSchedulesQueryDto } from "./dto/list-train-schedules-query.dto"; -import { AvailableDaysQueryDto } from "./dto/available-days-query.dto"; -import { AvailableDaysForCargoQueryDto } from "./dto/available-days-for-cargo-query.dto"; -import { UpdateTrainSchedulingGlobalRulesDto } from "./dto/update-train-scheduling-global-rules.dto"; -import { UpdateScheduleWindowRuleDto } from "./dto/update-schedule-window-rule.dto"; -import { UpdateScheduleDateDto } from "./dto/update-schedule-date.dto"; -import { MaintenanceRescheduleDto } from "./dto/maintenance-reschedule.dto"; -import { TrainSchedulingService } from "./train-scheduling.service"; -import { BookingBatchService } from "./booking-batch.service"; -import { BookingJourneyService } from "./booking-journey.service"; -import { BookingWindowService } from "./booking-window.service"; -import { IntercityService } from "./intercity.service"; -import { BillingService } from "../billing/billing.service"; +} from "../dto/import-djibouti-operation.dto"; +import { AvailableLocomotivesQueryDto } from "../dto/available-locomotives-query.dto"; +import { AdjustScheduleConsistDto } from "../dto/adjust-schedule-consist.dto"; +import { AvailableTrainsQueryDto } from "../dto/available-trains-query.dto"; +import { BatchBoardQueryDto } from "../dto/batch-board-query.dto"; +import { BookableSchedulesQueryDto } from "../dto/bookable-schedules-query.dto"; +import { ListTrainSchedulesQueryDto } from "../dto/list-train-schedules-query.dto"; +import { AvailableDaysQueryDto } from "../dto/available-days-query.dto"; +import { AvailableDaysForCargoQueryDto } from "../dto/available-days-for-cargo-query.dto"; +import { UpdateTrainSchedulingGlobalRulesDto } from "../dto/update-train-scheduling-global-rules.dto"; +import { UpdateScheduleWindowRuleDto } from "../dto/update-schedule-window-rule.dto"; +import { UpdateScheduleDateDto } from "../dto/update-schedule-date.dto"; +import { MaintenanceRescheduleDto } from "../dto/maintenance-reschedule.dto"; +import { TrainSchedulingService } from "../services/train-scheduling.service"; +import { BookingBatchService } from "../booking-batch.service"; +import { BookingJourneyService } from "../booking-journey.service"; +import { BookingWindowService } from "../booking-window.service"; +import { IntercityService } from "../intercity.service"; +import { BillingService } from "../../billing/billing.service"; -<<<<<<< Updated upstream:apps/edr-freight-api/src/modules/train-scheduling/train-scheduling.controller.ts @ApiTags("train-scheduling") -======= -import { TrainSchedulingManage, TrainSchedulingView } from '../../../common/booking-guards'; -import { AssignBookingsDto } from '../dto/assign-bookings.dto'; -import { CreateContainerTrainScheduleDto } from '../dto/create-container-train-schedule.dto'; -import { GetEligibleBookingsDto } from '../dto/get-eligible-bookings.dto'; -import { GetEligibleBulkBookingsDto } from '../dto/get-eligible-bulk-bookings.dto'; -import { GetEligibleContainerBookingsDto } from '../dto/get-eligible-container-bookings.dto'; -import { PinWagonsDto } from '../dto/pin-wagons.dto'; -import { PreviewBulkTrainScheduleDto } from '../dto/preview-bulk-train-schedule.dto'; -import { PreviewContainerTrainScheduleDto } from '../dto/preview-container-train-schedule.dto'; -import { PreviewTrainScheduleDto } from '../dto/preview-train-schedule.dto'; -import { RecordCheckpointDto } from '../dto/record-checkpoint.dto'; -import { UpdateTrainSchedulingGlobalRulesDto } from '../dto/update-train-scheduling-global-rules.dto'; -import { TrainSchedulingService } from '../services/train-scheduling.service'; - -@ApiTags('train-scheduling') ->>>>>>> Stashed changes:apps/edr-freight-api/src/modules/train-scheduling/controllers/train-scheduling.controller.ts @ApiBearerAuth() @Controller("train-scheduling") export class TrainSchedulingController { diff --git a/apps/edr-freight-api/src/modules/train-scheduling/gatepass-payment-gate.spec.ts b/apps/edr-freight-api/src/modules/train-scheduling/gatepass-payment-gate.spec.ts index 912f437f4..8521f4001 100644 --- a/apps/edr-freight-api/src/modules/train-scheduling/gatepass-payment-gate.spec.ts +++ b/apps/edr-freight-api/src/modules/train-scheduling/gatepass-payment-gate.spec.ts @@ -1,4 +1,4 @@ -import { TrainSchedulingService } from './train-scheduling.service'; +import { TrainSchedulingService } from './services/train-scheduling.service'; import { Booking } from '../bookings/entities/booking.entity'; import { ClearanceMilestone } from '../contracts/entities/clearance-milestone.entity'; diff --git a/apps/edr-freight-api/src/modules/train-scheduling/services/train-scheduling.service.spec.ts b/apps/edr-freight-api/src/modules/train-scheduling/services/train-scheduling.service.spec.ts index 5740b92f9..0a7384cfa 100644 --- a/apps/edr-freight-api/src/modules/train-scheduling/services/train-scheduling.service.spec.ts +++ b/apps/edr-freight-api/src/modules/train-scheduling/services/train-scheduling.service.spec.ts @@ -1,18 +1,11 @@ import { BadRequestException, ConflictException } from '@nestjs/common'; import { WagonStatus } from '@edr/types'; -<<<<<<< Updated upstream:apps/edr-freight-api/src/modules/train-scheduling/train-scheduling.service.spec.ts -import { Wagon } from '../wagons/entities/wagon.entity'; -import { WagonType } from '../wagon-types/entities/wagon-type.entity'; -import { TrainSetWagon } from '../train-sets/entities/train-set-wagon.entity'; -import { TrainSchedulingGlobalRules } from './entities/train-scheduling-global-rules.entity'; -import { WagonBookingAllocation } from '../train-schedules/entities/wagon-booking-allocation.entity'; -======= import { Wagon } from '../../wagons/entities/wagon.entity'; import { WagonType } from '../../wagon-types/entities/wagon-type.entity'; import { TrainSetWagon } from '../../train-sets/entities/train-set-wagon.entity'; import { TrainSchedulingGlobalRules } from '../entities/train-scheduling-global-rules.entity'; ->>>>>>> Stashed changes:apps/edr-freight-api/src/modules/train-scheduling/services/train-scheduling.service.spec.ts +import { WagonBookingAllocation } from '../../train-schedules/entities/wagon-booking-allocation.entity'; import { TrainSchedulingService } from './train-scheduling.service'; const nw5 = { diff --git a/apps/edr-freight-api/src/modules/train-scheduling/services/train-scheduling.service.ts b/apps/edr-freight-api/src/modules/train-scheduling/services/train-scheduling.service.ts index c61edfc24..657703ada 100644 --- a/apps/edr-freight-api/src/modules/train-scheduling/services/train-scheduling.service.ts +++ b/apps/edr-freight-api/src/modules/train-scheduling/services/train-scheduling.service.ts @@ -33,108 +33,74 @@ import { Raw, } from 'typeorm'; -<<<<<<< Updated upstream:apps/edr-freight-api/src/modules/train-scheduling/train-scheduling.service.ts import { buildPaginationMeta, normalizePagination, -} from '../../common/utils/pagination.util'; -import { BookingsRepository } from '../bookings/bookings.repository'; -import { Booking } from '../bookings/entities/booking.entity'; -import { BookingContainer } from '../bookings/entities/booking-container.entity'; -import { ClearanceMilestone } from '../contracts/entities/clearance-milestone.entity'; -import { ClearanceMilestoneService } from '../contracts/clearance-milestone.service'; -import { Contract } from '../contracts/entities/contract.entity'; -import { Container } from '../container-management/entities/container.entity'; -import { Locomotive } from '../locomotives/entities/locomotive.entity'; -import { LocomotivesRepository } from '../locomotives/locomotives.repository'; -import { formatRouteLabel, Route } from '../routes/entities/route.entity'; -import { WagonMovement } from '../wagons/entities/wagon-movement.entity'; -import { Train } from '../trains/entities/train.entity'; -import { TrainSetLocomotive } from '../train-sets/entities/train-set-locomotive.entity'; -import { TrainSetWagon } from '../train-sets/entities/train-set-wagon.entity'; -import { TrainSet } from '../train-sets/entities/train-set.entity'; -import { ScheduleWagonAdjustmentLog } from '../train-schedules/entities/schedule-wagon-adjustment-log.entity'; -import { TrainScheduleBooking } from '../train-schedules/entities/train-schedule-booking.entity'; -import { TrainSchedule } from '../train-schedules/entities/train-schedule.entity'; -import { WagonAllocationContainerItem } from '../train-schedules/entities/wagon-allocation-container-item.entity'; -import { WagonBookingAllocation } from '../train-schedules/entities/wagon-booking-allocation.entity'; -import { TrainScheduleBookingsRepository } from '../train-schedules/train-schedule-bookings.repository'; -import { TrainSchedulesRepository } from '../train-schedules/train-schedules.repository'; -import { TrainCompositionRemovalLogRepository } from '../train-schedules/train-composition-removal-log.repository'; -import { WagonAllocationBulkLoadsRepository } from '../train-schedules/wagon-allocation-bulk-loads.repository'; -import { WagonAllocationContainerItemsRepository } from '../train-schedules/wagon-allocation-container-items.repository'; -import { WagonBookingAllocationsRepository } from '../train-schedules/wagon-booking-allocations.repository'; -import { Yard } from '../rule-engine/entities/yard.entity'; -import { WagonType } from '../wagon-types/entities/wagon-type.entity'; -import { WagonTypesRepository } from '../wagon-types/wagon-types.repository'; -import { Wagon } from '../wagons/entities/wagon.entity'; -import { AdjustScheduleConsistDto } from './dto/adjust-schedule-consist.dto'; -import { AssignBookingsDto } from './dto/assign-bookings.dto'; -import { CreateContainerTrainScheduleDto } from './dto/create-container-train-schedule.dto'; -import { GetEligibleBookingsDto } from './dto/get-eligible-bookings.dto'; -import { GetEligibleBulkBookingsDto } from './dto/get-eligible-bulk-bookings.dto'; -import { GetEligibleContainerBookingsDto } from './dto/get-eligible-container-bookings.dto'; -import { - ListTrainSchedulesQueryDto, - TrainScheduleFreightType, -} from './dto/list-train-schedules-query.dto'; -import { PinWagonsDto } from './dto/pin-wagons.dto'; -import { MoveWagonLoadDto } from './dto/move-wagon-load.dto'; -import { UpdateContainerItemDto } from './dto/update-container-item.dto'; -import { UpdateImportLoadingStatusDto } from './dto/update-import-loading-status.dto'; -import { PreviewBulkTrainScheduleDto } from './dto/preview-bulk-train-schedule.dto'; -import { PreviewContainerTrainScheduleDto } from './dto/preview-container-train-schedule.dto'; -import { PreviewTrainScheduleDto } from './dto/preview-train-schedule.dto'; -import { TrainSchedulingGlobalRules } from './entities/train-scheduling-global-rules.entity'; -======= +} from '../../../common/utils/pagination.util'; import { BookingsRepository } from '../../bookings/bookings.repository'; import { Booking } from '../../bookings/entities/booking.entity'; import { BookingContainer } from '../../bookings/entities/booking-container.entity'; +import { ClearanceMilestone } from '../../contracts/entities/clearance-milestone.entity'; +import { ClearanceMilestoneService } from '../../contracts/clearance-milestone.service'; +import { Contract } from '../../contracts/entities/contract.entity'; import { Container } from '../../container-management/entities/container.entity'; import { Locomotive } from '../../locomotives/entities/locomotive.entity'; import { LocomotivesRepository } from '../../locomotives/locomotives.repository'; -import { Route } from '../../routes/entities/route.entity'; +import { formatRouteLabel, Route } from '../../routes/entities/route.entity'; +import { WagonMovement } from '../../wagons/entities/wagon-movement.entity'; +import { Train } from '../../trains/entities/train.entity'; +import { TrainSetLocomotive } from '../../train-sets/entities/train-set-locomotive.entity'; import { TrainSetWagon } from '../../train-sets/entities/train-set-wagon.entity'; import { TrainSet } from '../../train-sets/entities/train-set.entity'; +import { ScheduleWagonAdjustmentLog } from '../../train-schedules/entities/schedule-wagon-adjustment-log.entity'; import { TrainScheduleBooking } from '../../train-schedules/entities/train-schedule-booking.entity'; import { TrainSchedule } from '../../train-schedules/entities/train-schedule.entity'; +import { WagonAllocationContainerItem } from '../../train-schedules/entities/wagon-allocation-container-item.entity'; import { WagonBookingAllocation } from '../../train-schedules/entities/wagon-booking-allocation.entity'; import { TrainScheduleBookingsRepository } from '../../train-schedules/train-schedule-bookings.repository'; import { TrainSchedulesRepository } from '../../train-schedules/train-schedules.repository'; +import { TrainCompositionRemovalLogRepository } from '../../train-schedules/train-composition-removal-log.repository'; import { WagonAllocationBulkLoadsRepository } from '../../train-schedules/wagon-allocation-bulk-loads.repository'; import { WagonAllocationContainerItemsRepository } from '../../train-schedules/wagon-allocation-container-items.repository'; import { WagonBookingAllocationsRepository } from '../../train-schedules/wagon-booking-allocations.repository'; +import { Yard } from '../../rule-engine/entities/yard.entity'; import { WagonType } from '../../wagon-types/entities/wagon-type.entity'; import { WagonTypesRepository } from '../../wagon-types/wagon-types.repository'; import { Wagon } from '../../wagons/entities/wagon.entity'; +import { AdjustScheduleConsistDto } from '../dto/adjust-schedule-consist.dto'; import { AssignBookingsDto } from '../dto/assign-bookings.dto'; import { CreateContainerTrainScheduleDto } from '../dto/create-container-train-schedule.dto'; import { GetEligibleBookingsDto } from '../dto/get-eligible-bookings.dto'; import { GetEligibleBulkBookingsDto } from '../dto/get-eligible-bulk-bookings.dto'; import { GetEligibleContainerBookingsDto } from '../dto/get-eligible-container-bookings.dto'; +import { + ListTrainSchedulesQueryDto, + TrainScheduleFreightType, +} from '../dto/list-train-schedules-query.dto'; import { PinWagonsDto } from '../dto/pin-wagons.dto'; +import { MoveWagonLoadDto } from '../dto/move-wagon-load.dto'; +import { UpdateContainerItemDto } from '../dto/update-container-item.dto'; +import { UpdateImportLoadingStatusDto } from '../dto/update-import-loading-status.dto'; import { PreviewBulkTrainScheduleDto } from '../dto/preview-bulk-train-schedule.dto'; import { PreviewContainerTrainScheduleDto } from '../dto/preview-container-train-schedule.dto'; import { PreviewTrainScheduleDto } from '../dto/preview-train-schedule.dto'; import { TrainSchedulingGlobalRules } from '../entities/train-scheduling-global-rules.entity'; import { UpdateTrainSchedulingGlobalRulesDto } from '../dto/update-train-scheduling-global-rules.dto'; ->>>>>>> Stashed changes:apps/edr-freight-api/src/modules/train-scheduling/services/train-scheduling.service.ts import { ImportDjiboutiOperation, type ImportDjiboutiDocumentType, -} from './entities/import-djibouti-operation.entity'; +} from '../entities/import-djibouti-operation.entity'; import { ImportDjiboutiActionDto, UploadImportDjiboutiDocumentDto, -} from './dto/import-djibouti-operation.dto'; -import { UpdateTrainSchedulingGlobalRulesDto } from './dto/update-train-scheduling-global-rules.dto'; -import { UpdateScheduleWindowRuleDto } from './dto/update-schedule-window-rule.dto'; -import { UpdateScheduleDateDto } from './dto/update-schedule-date.dto'; -import { MaintenanceRescheduleDto } from './dto/maintenance-reschedule.dto'; -import { type BookingWindowConfig } from './booking-window.config'; -import { BookingWindowGateway } from './booking-window.gateway'; -import { BookingNotifierService } from './booking-notifier.service'; -import { BookingBatchService } from './booking-batch.service'; +} from '../dto/import-djibouti-operation.dto'; +import { UpdateScheduleWindowRuleDto } from '../dto/update-schedule-window-rule.dto'; +import { UpdateScheduleDateDto } from '../dto/update-schedule-date.dto'; +import { MaintenanceRescheduleDto } from '../dto/maintenance-reschedule.dto'; +import { type BookingWindowConfig } from '../booking-window.config'; +import { BookingWindowGateway } from '../booking-window.gateway'; +import { BookingNotifierService } from '../booking-notifier.service'; +import { BookingBatchService } from '../booking-batch.service'; import { computeFleetAvailability, summarizeFleetWarnings, @@ -149,7 +115,7 @@ import { planWagonsWithStock, type AllowedWagonTypeMap, type WagonStock, -} from './wagon-plan-flex.util'; +} from '../wagon-plan-flex.util'; import { containerWagonsForLines, expandBookingContainerUnits, @@ -163,11 +129,10 @@ import { validateMixedTrainLimitsPerEdge, type ContainerPlacementInput, type WagonPlanSlot, -<<<<<<< Updated upstream:apps/edr-freight-api/src/modules/train-scheduling/train-scheduling.service.ts -} from './wagon-plan.util'; -import { CorridorBudget } from './corridor-capacity.util'; -import { deriveScheduleDirection } from './derive-schedule-direction.util'; -import { pickLowestFreeNumber, pickTrainNumberPool } from './train-number.util'; +} from '../utils/wagon-plan.util'; +import { CorridorBudget } from '../corridor-capacity.util'; +import { deriveScheduleDirection } from '../utils/derive-schedule-direction.util'; +import { pickLowestFreeNumber, pickTrainNumberPool } from '../train-number.util'; import { bookingCargoTons, bulkItemsFitFor, @@ -179,7 +144,7 @@ import { wagonTypeDimensionsFromEntity, LocomotiveLimits, WagonTypeDimensions, -} from './train-capacity.util'; +} from '../train-capacity.util'; import { DEFAULT_BULK_WAGON_CAPACITY_TONS, DEFAULT_BULK_WAGON_LENGTH_METERS, @@ -188,8 +153,8 @@ import { DEFAULT_CONTAINER_WAGON_LENGTH_METERS, DEFAULT_CONTAINER_WAGON_TARE_TONS, paymentDrainEndsAtIso, -} from './booking-batch.constants'; -import { orderConsistWagons } from './consist-order.util'; +} from '../booking-batch.constants'; +import { orderConsistWagons } from '../consist-order.util'; import { computeExportWindowTimes, computeImportWindowTimes, @@ -197,35 +162,22 @@ import { eatDay, eatDayToUtc, shiftEatDay, -} from './batch-window.util'; -import { TrainCheckpointEvent } from './entities/train-checkpoint-event.entity'; -import { BookingJourneyService } from './booking-journey.service'; -import { TrainCheckpointEventsRepository } from './train-checkpoint-events.repository'; -import { RecordCheckpointDto } from './dto/record-checkpoint.dto'; -import { RouteMilestone } from '../routes/entities/route-milestone.entity'; -import { deriveTradeDirection } from '../../common/derive-trade-direction.util'; -import { WarehouseInventoryService } from '../warehouses/warehouse-inventory.service'; -import { WarehouseReleaseDocumentService } from '../warehouses/warehouse-release-document.service'; +} from '../batch-window.util'; +import { TrainCheckpointEvent } from '../entities/train-checkpoint-event.entity'; +import { BookingJourneyService } from '../booking-journey.service'; +import { TrainCheckpointEventsRepository } from '../repositories/train-checkpoint-events.repository'; +import { RecordCheckpointDto } from '../dto/record-checkpoint.dto'; +import { RouteMilestone } from '../../routes/entities/route-milestone.entity'; +import { deriveTradeDirection } from '../../../common/derive-trade-direction.util'; +import { WarehouseInventoryService } from '../../warehouses/warehouse-inventory.service'; +import { WarehouseReleaseDocumentService } from '../../warehouses/warehouse-release-document.service'; import { autoFillPlacements, findMissingContainerNumberIssues, isPlaceholderContainerNumber, placementsForBookings, type ContainerUnitForPlacement, -} from './container-placement.util'; -======= -} from '../utils/wagon-plan.util'; -import { - getDefaultContainerWagonTypeCode, - pickBulkWagonType, -} from '../utils/wagon-type-resolver.util'; -import { deriveScheduleDirection } from '../utils/derive-schedule-direction.util'; -import { flipReadiness, wagonReadinessMatchesSchedule } from '../utils/wagon-readiness.util'; -import { TrainCheckpointEvent } from '../entities/train-checkpoint-event.entity'; -import { TrainCheckpointEventsRepository } from '../repositories/train-checkpoint-events.repository'; -import { RecordCheckpointDto } from '../dto/record-checkpoint.dto'; -import { RouteMilestone } from '../../routes/entities/route-milestone.entity'; ->>>>>>> Stashed changes:apps/edr-freight-api/src/modules/train-scheduling/services/train-scheduling.service.ts +} from '../container-placement.util'; const SCHEDULABLE_BOOKING_STATUSES = ['PAID'] as const; @@ -5769,7 +5721,6 @@ export class TrainSchedulingService { return null; } -<<<<<<< Updated upstream:apps/edr-freight-api/src/modules/train-scheduling/train-scheduling.service.ts /** * Insert a schedule with a freshly generated S--NNNNN reference, retrying * past a concurrent insert that grabbed the same sequence (the unique index @@ -5800,10 +5751,7 @@ export class TrainSchedulingService { throw new ConflictException('Could not allocate a unique schedule reference'); } - private mapScheduleListItem(schedule: import('../train-schedules/entities/train-schedule.entity').TrainSchedule) { -======= private mapScheduleListItem(schedule: import('../../train-schedules/entities/train-schedule.entity').TrainSchedule) { ->>>>>>> Stashed changes:apps/edr-freight-api/src/modules/train-scheduling/services/train-scheduling.service.ts return { id: schedule.id, reference: schedule.reference ?? null, @@ -6959,7 +6907,7 @@ export class TrainSchedulingService { originYardId?: string, destinationYardId?: string, ): Promise< - import('../train-schedules/entities/train-schedule.entity').TrainSchedule[] + import('../../train-schedules/entities/train-schedule.entity').TrainSchedule[] > { const schedules = await this.trainSchedulesRepository.findAll({ where: { diff --git a/apps/edr-freight-api/src/modules/train-scheduling/train-scheduling.module.ts b/apps/edr-freight-api/src/modules/train-scheduling/train-scheduling.module.ts index 5335997a3..dd5cc74bc 100644 --- a/apps/edr-freight-api/src/modules/train-scheduling/train-scheduling.module.ts +++ b/apps/edr-freight-api/src/modules/train-scheduling/train-scheduling.module.ts @@ -24,10 +24,9 @@ import { WarehousesModule } from '../warehouses/warehouses.module'; import { TrainCheckpointEvent } from './entities/train-checkpoint-event.entity'; import { ImportDjiboutiOperation } from './entities/import-djibouti-operation.entity'; import { TrainSchedulingGlobalRules } from './entities/train-scheduling-global-rules.entity'; -<<<<<<< Updated upstream -import { TrainCheckpointEventsRepository } from './train-checkpoint-events.repository'; -import { TrainSchedulingController } from './train-scheduling.controller'; -import { TrainSchedulingService } from './train-scheduling.service'; +import { TrainCheckpointEventsRepository } from './repositories/train-checkpoint-events.repository'; +import { TrainSchedulingController } from './controllers/train-scheduling.controller'; +import { TrainSchedulingService } from './services/train-scheduling.service'; import { BookingBatchService } from './booking-batch.service'; import { BookingNotifierService } from './booking-notifier.service'; import { BookingWindowGateway } from './booking-window.gateway'; @@ -42,11 +41,6 @@ import { WagonMovement } from '../wagons/entities/wagon-movement.entity'; import { NotificationsModule } from '../notifications/notifications.module'; import { NotificationInboxModule } from '../notification-inbox/notification-inbox.module'; import { ContractsModule } from '../contracts/contracts.module'; -======= -import { TrainCheckpointEventsRepository } from './repositories/train-checkpoint-events.repository'; -import { TrainSchedulingController } from './controllers/train-scheduling.controller'; -import { TrainSchedulingService } from './services/train-scheduling.service'; ->>>>>>> Stashed changes @Module({ imports: [ diff --git a/apps/edr-freight-api/src/modules/train-scheduling/utils/derive-schedule-direction.util.ts b/apps/edr-freight-api/src/modules/train-scheduling/utils/derive-schedule-direction.util.ts index 7e7358358..1916f5bb8 100644 --- a/apps/edr-freight-api/src/modules/train-scheduling/utils/derive-schedule-direction.util.ts +++ b/apps/edr-freight-api/src/modules/train-scheduling/utils/derive-schedule-direction.util.ts @@ -1,4 +1,4 @@ -import { deriveTradeDirection } from '../../common/derive-trade-direction.util'; +import { deriveTradeDirection } from '../../../common/derive-trade-direction.util'; /** @deprecated Use deriveTradeDirection from common — kept as alias for train scheduling. */ export const deriveScheduleDirection = deriveTradeDirection; diff --git a/apps/edr-freight-api/src/modules/train-scheduling/utils/fleet-plan.util.ts b/apps/edr-freight-api/src/modules/train-scheduling/utils/fleet-plan.util.ts index 807218b13..1dbd6e05a 100644 --- a/apps/edr-freight-api/src/modules/train-scheduling/utils/fleet-plan.util.ts +++ b/apps/edr-freight-api/src/modules/train-scheduling/utils/fleet-plan.util.ts @@ -1,11 +1,6 @@ -<<<<<<< Updated upstream:apps/edr-freight-api/src/modules/train-scheduling/fleet-plan.util.ts -import { bookingCargoTons, bulkWagonsForAllowedTypes } from './train-capacity.util'; -import type { Booking } from '../bookings/entities/booking.entity'; -import type { WagonType } from '../wagon-types/entities/wagon-type.entity'; -======= +import { bookingCargoTons, bulkWagonsForAllowedTypes } from '../train-capacity.util'; import type { Booking } from '../../bookings/entities/booking.entity'; import type { WagonType } from '../../wagon-types/entities/wagon-type.entity'; ->>>>>>> Stashed changes:apps/edr-freight-api/src/modules/train-scheduling/utils/fleet-plan.util.ts import { buildBulkWagonPlan, buildContainerWagonPlan, diff --git a/apps/edr-freight-api/src/modules/train-scheduling/utils/wagon-plan.util.ts b/apps/edr-freight-api/src/modules/train-scheduling/utils/wagon-plan.util.ts index d0d11182b..01c497262 100644 --- a/apps/edr-freight-api/src/modules/train-scheduling/utils/wagon-plan.util.ts +++ b/apps/edr-freight-api/src/modules/train-scheduling/utils/wagon-plan.util.ts @@ -1,9 +1,8 @@ import { AllocationLoadType } from '@edr/types'; -<<<<<<< Updated upstream:apps/edr-freight-api/src/modules/train-scheduling/wagon-plan.util.ts -import { Booking } from '../bookings/entities/booking.entity'; -import { containersPerWagonForSize, wagonsPerUnitForSize } from '../rule-engine/container-type.util'; -import { WagonType } from '../wagon-types/entities/wagon-type.entity'; +import { Booking } from '../../bookings/entities/booking.entity'; +import { containersPerWagonForSize, wagonsPerUnitForSize } from '../../rule-engine/container-type.util'; +import { WagonType } from '../../wagon-types/entities/wagon-type.entity'; import { bookingCargoTons, bulkItemsFitFor, @@ -11,11 +10,7 @@ import { bulkTonsPerWagon, bulkTonWagonsRequired, consistViolations, -} from './train-capacity.util'; -======= -import { Booking } from '../../bookings/entities/booking.entity'; -import { WagonType } from '../../wagon-types/entities/wagon-type.entity'; ->>>>>>> Stashed changes:apps/edr-freight-api/src/modules/train-scheduling/utils/wagon-plan.util.ts +} from '../train-capacity.util'; export const MAX_TRAIN_WEIGHT_TONS = 3500; export const MAX_TRAIN_LENGTH_METERS = 760; diff --git a/apps/edr-freight-api/src/modules/train-scheduling/wagon-plan-flex.util.spec.ts b/apps/edr-freight-api/src/modules/train-scheduling/wagon-plan-flex.util.spec.ts index 8d9339186..af0cd11f4 100644 --- a/apps/edr-freight-api/src/modules/train-scheduling/wagon-plan-flex.util.spec.ts +++ b/apps/edr-freight-api/src/modules/train-scheduling/wagon-plan-flex.util.spec.ts @@ -4,7 +4,7 @@ import { applyWagonOrderReversal, planWagonsWithStock, } from './wagon-plan-flex.util'; -import type { WagonPlanSlot } from './wagon-plan.util'; +import type { WagonPlanSlot } from './utils/wagon-plan.util'; const nw6: WagonType = { id: 'wt-nw6', diff --git a/apps/edr-freight-api/src/modules/train-scheduling/wagon-plan-flex.util.ts b/apps/edr-freight-api/src/modules/train-scheduling/wagon-plan-flex.util.ts index ef1e741be..f7db22506 100644 --- a/apps/edr-freight-api/src/modules/train-scheduling/wagon-plan-flex.util.ts +++ b/apps/edr-freight-api/src/modules/train-scheduling/wagon-plan-flex.util.ts @@ -11,7 +11,7 @@ import { sortBookingsForScheduling, type BookingWagonShortage, type DeferredBookingRow, -} from './fleet-plan.util'; +} from './utils/fleet-plan.util'; import { MAX_TEU_SLOTS_PER_WAGON, containerWagonsForLines, @@ -21,7 +21,7 @@ import { teuSlotsForSizeFt, type SlotLoadType, type WagonPlanSlot, -} from './wagon-plan.util'; +} from './utils/wagon-plan.util'; /** * Wagon types allowed to carry each container type / bulk cargo type — the