mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-26 18:42:49 +00:00
Package boarding station updates
This commit is contained in:
@@ -216,7 +216,26 @@ export class PackagesService {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
if (!pkg) throw new NotFoundException('Package not found');
|
if (!pkg) throw new NotFoundException('Package not found');
|
||||||
return { ...pkg, journeyType: pkg.returnScheduleId ? 'ROUND_TRIP' : 'ONE_WAY' };
|
|
||||||
|
// Fetch live route stops so the departure station dropdown always reflects
|
||||||
|
// the current route definition, not stale TripStopTime snapshots.
|
||||||
|
let routeStops: { sequence: number; station: any }[] = [];
|
||||||
|
if (pkg.outboundSchedule.routeId) {
|
||||||
|
const stops = await this.prisma.routeStop.findMany({
|
||||||
|
where: { routeId: pkg.outboundSchedule.routeId },
|
||||||
|
orderBy: { sequence: 'asc' },
|
||||||
|
});
|
||||||
|
const stationIds = stops.map((s) => s.stationId);
|
||||||
|
const stations = await this.prisma.station.findMany({ where: { id: { in: stationIds } } });
|
||||||
|
const stationMap = Object.fromEntries(stations.map((s) => [s.id, s]));
|
||||||
|
routeStops = stops.map((s) => ({ sequence: s.sequence, station: stationMap[s.stationId] }));
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
...pkg,
|
||||||
|
journeyType: pkg.returnScheduleId ? 'ROUND_TRIP' : 'ONE_WAY',
|
||||||
|
outboundSchedule: { ...pkg.outboundSchedule, routeStops },
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
create(dto: CreatePackageDto) {
|
create(dto: CreatePackageDto) {
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ interface TrainInfo {
|
|||||||
operatorName: string;
|
operatorName: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface StopTime {
|
interface RouteStop {
|
||||||
sequence: number;
|
sequence: number;
|
||||||
station: Station;
|
station: Station;
|
||||||
}
|
}
|
||||||
@@ -55,7 +55,7 @@ interface Schedule {
|
|||||||
originStation: Station;
|
originStation: Station;
|
||||||
destinationStation: Station;
|
destinationStation: Station;
|
||||||
train: TrainInfo;
|
train: TrainInfo;
|
||||||
stopTimes?: StopTime[];
|
routeStops?: RouteStop[];
|
||||||
}
|
}
|
||||||
|
|
||||||
interface PriceTier {
|
interface PriceTier {
|
||||||
@@ -438,9 +438,9 @@ export default function PackageDetailPage() {
|
|||||||
enabled: !!id,
|
enabled: !!id,
|
||||||
});
|
});
|
||||||
|
|
||||||
// Build departure station list from the outbound schedule's route stops (ordered by sequence)
|
// Build departure station list from live route stops (always reflects current route definition)
|
||||||
const routeStopStations: Station[] = pkg?.outboundSchedule?.stopTimes?.length
|
const routeStopStations: Station[] = pkg?.outboundSchedule?.routeStops?.length
|
||||||
? pkg.outboundSchedule.stopTimes.map((st) => st.station).filter(Boolean)
|
? pkg.outboundSchedule.routeStops.map((rs) => rs.station).filter(Boolean)
|
||||||
: [];
|
: [];
|
||||||
|
|
||||||
const selectedTier = pkg?.priceTiers?.find((t) => t.id === selectedTierId);
|
const selectedTier = pkg?.priceTiers?.find((t) => t.id === selectedTierId);
|
||||||
|
|||||||
Reference in New Issue
Block a user