示例#1
0
        private ITrainRoute GetTrainRoute(IFavouriteRoute favouriteRoute)
        {
            var routeRepository  = new RouteStopRepository();
            var cachedTrainRoute = routeRepository.Find(favouriteRoute.FromId, favouriteRoute.ToId);

            if (cachedTrainRoute != null)
            {
                return(cachedTrainRoute);
            }
            var stationRoutesQuery = new ApiQuery <Route>(_settingsProvider);
            var routes             = stationRoutesQuery.Query(string.Format("/query/station/{0}", favouriteRoute.FromId));

            foreach (var route in routes)
            {
                var routeQuery = new ApiQuery <TrainRoute>(_settingsProvider);
                var queryUri   = string.Format("/query/date/{0}/route/{1}/from/{2}/to/{3}", route.Date, int.Parse(route.RouteNo),
                                               favouriteRoute.FromId, favouriteRoute.ToId);
                var trainRoutes = routeQuery.Query(queryUri);
                if (trainRoutes.Any())
                {
                    var trainRoute = trainRoutes.First();
                    if (!string.IsNullOrWhiteSpace(trainRoute.FromStation.StationName) &&
                        !string.IsNullOrWhiteSpace(trainRoute.ToStation.StationName))
                    {
                        routeRepository.Add(trainRoute);
                    }
                    return(trainRoute);
                }
            }
            return(null);
        }
 public NavigationModule(ISettingsProvider settingsProvider, IFavouriteRoute favouriteRoute)
 {
     _settingsProvider = settingsProvider;
     Get["/"] = _ => View["Home"];
     Get["/Routes/from/{FromId}/to/{ToId}"] = parameters =>
         {
             if (string.IsNullOrWhiteSpace(parameters.FromId) || string.IsNullOrWhiteSpace(parameters.ToId))
                 return HttpStatusCode.BadRequest;
             favouriteRoute.FromId = System.Net.WebUtility.UrlDecode(parameters.FromId).ToUpperInvariant();
             favouriteRoute.ToId = System.Net.WebUtility.UrlDecode(parameters.ToId).ToUpperInvariant();
             var trainRoute = GetTrainRoute(favouriteRoute);
             return trainRoute != null ? View["TrainRoutes", trainRoute] : View["NoDirectRouteFound"];
         };
     Get["/Favourites"] = _ => View["Favourites"];
     Get["/Train"] = _ => View["Train"];
 }
示例#3
0
 public NavigationModule(ISettingsProvider settingsProvider, IFavouriteRoute favouriteRoute)
 {
     _settingsProvider = settingsProvider;
     Get["/"]          = _ => View["Home"];
     Get["/Routes/from/{FromId}/to/{ToId}"] = parameters =>
     {
         if (string.IsNullOrWhiteSpace(parameters.FromId) || string.IsNullOrWhiteSpace(parameters.ToId))
         {
             return(HttpStatusCode.BadRequest);
         }
         favouriteRoute.FromId = System.Net.WebUtility.UrlDecode(parameters.FromId).ToUpperInvariant();
         favouriteRoute.ToId   = System.Net.WebUtility.UrlDecode(parameters.ToId).ToUpperInvariant();
         var trainRoute = GetTrainRoute(favouriteRoute);
         return(trainRoute != null ? View["TrainRoutes", trainRoute] : View["NoDirectRouteFound"]);
     };
     Get["/Favourites"] = _ => View["Favourites"];
     Get["/Train"]      = _ => View["Train"];
 }
 private ITrainRoute GetTrainRoute(IFavouriteRoute favouriteRoute)
 {
     var routeRepository = new RouteStopRepository();
     var cachedTrainRoute = routeRepository.Find(favouriteRoute.FromId, favouriteRoute.ToId);
     if (cachedTrainRoute != null) return cachedTrainRoute;
     var stationRoutesQuery = new ApiQuery<Route>(_settingsProvider);
     var routes = stationRoutesQuery.Query(string.Format("/query/station/{0}", favouriteRoute.FromId));
     foreach (var route in routes)
     {
         var routeQuery = new ApiQuery<TrainRoute>(_settingsProvider);
         var queryUri = string.Format("/query/date/{0}/route/{1}/from/{2}/to/{3}", route.Date, int.Parse(route.RouteNo),
                                      favouriteRoute.FromId, favouriteRoute.ToId);
         var trainRoutes = routeQuery.Query(queryUri);
         if (trainRoutes.Any())
         {
             var trainRoute = trainRoutes.First();
             if (!string.IsNullOrWhiteSpace(trainRoute.FromStation.StationName) &&
                 !string.IsNullOrWhiteSpace(trainRoute.ToStation.StationName))
                 routeRepository.Add(trainRoute);
             return trainRoute;
         }
     }
     return null;
 }