public void TestGetTimesForBusStop()
        {
            var sut = new TransportTimesClient();

            var task = sut.GetTimesForBusStop("00608");

            Assert.IsTrue(task.Wait(WebTimoutMs), "timed out waiting for web response");

            var busTimes = task.Result;

            foreach (var bus in busTimes)
            {
                Console.WriteLine($"{bus.Service} to {bus.Destination} due {bus.DueRelative} ({bus.DueAbsolute})");
            }

            Assert.IsTrue(busTimes.Any(), "expect some bus times back from rtpi service");
        }
Exemple #2
0
        public async Task<IDictionary<string, IEnumerable<TransportTime>>> MyTransportTimes()
        {
            var username = identity.GetUserName();
            var client = new TransportTimesClient();
            var result = new Dictionary<string, IEnumerable<TransportTime>>();

            var myJourneys = dbContext.JourneysEager().Where(j => j.UserEmail == username);

            foreach (var journey in myJourneys)
            {
                IEnumerable<TransportTime> times = Array.Empty<TransportTime>();

                foreach (var serviceFilter in journey.DepartureCriteriaCollection)
                {
                    var station = serviceFilter.Station;

                    switch (station.StationType)
                    {
                        case StationType.busStop:
                        case StationType.luasStop:
                            {
                                var t = await client.GetTimesForBusStop(station.ID);
                                times = times.Concat(ApplyServiceListFilter(serviceFilter, t));
                                break;
                            }
                        case StationType.trainStation:
                        {
                                var t = await client.GetTimesForDartStation(station.ID, serviceFilter.Station.Direction.Value);
                                times = times.Concat(ApplyServiceListFilter(serviceFilter, t));
                                break;
                            }
                    }
                }

                result.Add(
                    journey.Name, 
                    times.OrderBy(t => t.Minutes));
            }

            return result;
        }