@@ -104,12 +104,12 @@ public DataFetcher<Iterable<TransitAlert>> alerts() {
104
104
.anyMatch (entity ->
105
105
(
106
106
entity instanceof EntitySelector .StopAndRoute stopAndRoute &&
107
- stopAndRoute .routeId ().equals (getRoute (environment ).getId ())
107
+ stopAndRoute .routeId ().equals (getRoute (environment ).getId ())
108
108
) ||
109
- (
110
- entity instanceof EntitySelector .StopAndTrip stopAndTrip &&
111
- stopAndTrip .tripId ().equals (getSource (environment ).getId ())
112
- )
109
+ (
110
+ entity instanceof EntitySelector .StopAndTrip stopAndTrip &&
111
+ stopAndTrip .tripId ().equals (getSource (environment ).getId ())
112
+ )
113
113
)
114
114
)
115
115
.toList ()
@@ -143,7 +143,7 @@ public DataFetcher<TripTimeOnDate> arrivalStoptime() {
143
143
}
144
144
}
145
145
146
- TripPattern tripPattern = getTripPattern (environment );
146
+ TripPattern tripPattern = getTripPattern (environment , serviceDate );
147
147
if (tripPattern == null ) {
148
148
return null ;
149
149
}
@@ -176,7 +176,7 @@ public DataFetcher<TripTimeOnDate> departureStoptime() {
176
176
}
177
177
}
178
178
179
- TripPattern tripPattern = getTripPattern (environment );
179
+ TripPattern tripPattern = getTripPattern (environment , serviceDate );
180
180
if (tripPattern == null ) {
181
181
return null ;
182
182
}
@@ -301,7 +301,7 @@ public DataFetcher<Iterable<TripTimeOnDate>> stoptimesForDate() {
301
301
? ServiceDateUtils .parseString (args .getGraphQLServiceDate ())
302
302
: LocalDate .now (timeZone );
303
303
304
- TripPattern tripPattern = transitService . getPatternForTrip ( trip , serviceDate );
304
+ TripPattern tripPattern = getTripPattern ( environment , serviceDate );
305
305
// no matching pattern found
306
306
if (tripPattern == null ) {
307
307
return List .of ();
@@ -376,6 +376,15 @@ private TripPattern getTripPattern(DataFetchingEnvironment environment) {
376
376
return getTransitService (environment ).getPatternForTrip (environment .getSource ());
377
377
}
378
378
379
+ private TripPattern getTripPattern (
380
+ DataFetchingEnvironment environment ,
381
+ @ Nullable LocalDate date
382
+ ) {
383
+ return date == null
384
+ ? getTripPattern (environment )
385
+ : getTransitService (environment ).getPatternForTrip (environment .getSource (), date );
386
+ }
387
+
379
388
private TransitService getTransitService (DataFetchingEnvironment environment ) {
380
389
return environment .<GraphQLRequestContext >getContext ().transitService ();
381
390
}
@@ -389,17 +398,28 @@ private TripTimeOnDate getStoptimeAtIndex(
389
398
@ Nullable LocalDate serviceDate ,
390
399
int stopIndex
391
400
) {
392
- var tripPattern = getTripPattern (environment );
401
+ var tripPattern = getTripPattern (environment , serviceDate );
402
+ var transitService = getTransitService (environment );
403
+ var timetable = serviceDate != null
404
+ ? transitService .getTimetableForTripPattern (tripPattern , serviceDate )
405
+ : tripPattern .getScheduledTimetable ();
406
+ if (timetable == null ) {
407
+ return null ;
408
+ }
409
+
410
+ var tripTimes = timetable .getTripTimes (getSource (environment ));
411
+ if (tripTimes == null ) {
412
+ return null ;
413
+ }
414
+
393
415
return new TripTimeOnDate (
394
- tripPattern . getScheduledTimetable (). getTripTimes ( getSource ( environment )) ,
416
+ tripTimes ,
395
417
stopIndex ,
396
418
tripPattern ,
397
419
serviceDate ,
398
420
serviceDate == null
399
421
? null
400
- : ServiceDateUtils
401
- .asStartOfService (serviceDate , getTransitService (environment ).getTimeZone ())
402
- .toInstant ()
422
+ : ServiceDateUtils .asStartOfService (serviceDate , transitService .getTimeZone ()).toInstant ()
403
423
);
404
424
}
405
425
0 commit comments