Esempio n. 1
0
        public async Task <int> PopulateJumpCache(int fromId, int toId)
        {
            var route = _navigatorDbContext.Routes.FirstOrDefault(x => x.From == fromId && x.To == toId);

            if (route == null)
            {
                route = new Route(fromId, toId);

                try
                {
                    if (fromId != toId)
                    {
                        var isAnySystemAWormhole = IsAnySystemAWormhole(new List <int> {
                            fromId, toId
                        });

                        if (isAnySystemAWormhole == false)
                        {
                            var result = await _api.Routes.GetRouteV1Async(route.From, route.To);

                            route.NavigatedSystems.AddRange(result.Model);

                            var discoveredRoutes = ComputeRoutes(route);

                            _navigatorDbContext.Routes.AddRange(discoveredRoutes);

                            await _navigatorDbContext.SaveChangesAsync();
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.Write(ex);
                }
            }

            return(await Task.FromResult(route.NavigatedSystems.Count));
        }