export flow and fix intercity issue

This commit is contained in:
Marshal
2026-07-30 13:11:35 +00:00
parent 9208050cb5
commit e80aac877f
19 changed files with 486 additions and 27 deletions

View File

@@ -1,4 +1,4 @@
import type { PaginatedResponse } from "@edr/types";
import type { Freight, PaginatedResponse } from "@edr/types";
import { QUERY_KEYS } from "@/constants/QUERY_KEYS";
import type { FleetResourceSlug } from "@/pages/fleet/config/resources";
@@ -438,6 +438,31 @@ export const api = {
],
),
exportTrains: endpoint<
{
bookingId: string;
date: string;
cargo?: {
containerSizes?: string[];
cargoTypeCode?: string;
wagons?: number;
};
},
Freight.ExportTrainOption[]
>(
"train-scheduling",
"export-trains",
({ bookingId, date, cargo }) =>
trainSchedulingService.getExportTrains(bookingId, date, cargo),
({ bookingId, date, cargo }) => [
...QUERY_KEYS.TRAIN_SCHEDULING.ROOT,
"export-trains",
bookingId,
date,
JSON.stringify(cargo ?? {}),
],
),
trainTrack: endpoint<{ id: string }, TrainTrackResponse>(
"train-scheduling",
"track",

View File

@@ -189,6 +189,29 @@ export const trainSchedulingService = {
// Cargo-aware day pool (matching wagons + open train capacity). `containers`
// is serialized as a JSON string param (the server parses it).
// Export train picker for a booking's shipment day; cargo params cover bare
// instances whose cargo only exists on the form so far.
getExportTrains: async (
bookingId: string,
date: string,
cargo?: { containerSizes?: string[]; cargoTypeCode?: string; wagons?: number },
): Promise<Freight.ExportTrainOption[]> => {
const response = await client.get<Freight.ExportTrainOption[]>(
`/bookings/${bookingId}/export-trains`,
{
params: {
date,
...(cargo?.containerSizes?.length
? { containerSizes: cargo.containerSizes.join(",") }
: {}),
...(cargo?.cargoTypeCode ? { cargoTypeCode: cargo.cargoTypeCode } : {}),
...(cargo?.wagons ? { wagons: cargo.wagons } : {}),
},
},
);
return unwrap(response.data);
},
getAvailableDaysForCargo: async (
query: Freight.AvailableDaysForCargoQuery,
): Promise<string[]> => {