示例#1
0
        public async Task AddStation(BicycleStation model)
        {
            var entity = _db.Stations.Add(model);
            await _db.SaveChangesAsync();

            var routes = Algorithm.AddRoutes(entity, GetAllStations());

            _db.Routes.AddRange(routes);

            await _db.SaveChangesAsync();
        }
        protected override void Seed(BicycleContext db)
        {
            BicycleStation bs1 = new BicycleStation()
            {
                Latitude = 51.548678, Longitude = 46.007026, Name = "Эконом"
            };
            BicycleStation bs2 = new BicycleStation()
            {
                Latitude = 51.540841, Longitude = 46.013070, Name = "KFC на Радищева"
            };

            //BicycleStation bs3 = new BicycleStation() { Latitude = 51.527946, Longitude = 46.000740, Name = "3" };
            //BicycleStation bs4 = new BicycleStation() { Latitude = 51.520398, Longitude = 46.002032, Name = "4" };
            //BicycleStation bs5 = new BicycleStation() { Latitude = 51.516085, Longitude = 46.006580, Name = "5" };
            //BicycleStation bs6 = new BicycleStation() { Latitude = 51.520278, Longitude = 46.013876, Name = "6" };
            //BicycleStation bs7 = new BicycleStation() { Latitude = 51.528631, Longitude = 46.018895, Name = "7" };
            //BicycleStation bs8 = new BicycleStation() { Latitude = 51.525592, Longitude = 46.042263, Name = "8" };
            //BicycleStation bs9 = new BicycleStation() { Latitude = 51.529663, Longitude = 46.061768, Name = "9" };
            //BicycleStation bs10 = new BicycleStation() { Latitude = 51.534801, Longitude = 46.037543, Name = "10" };


            db.Stations.Add(bs1);
            db.Stations.Add(bs2);
            //db.Stations.Add(bs3);
            //db.Stations.Add(bs4);
            //db.Stations.Add(bs5);
            //db.Stations.Add(bs6);
            //db.Stations.Add(bs7);
            //db.Stations.Add(bs8);
            //db.Stations.Add(bs9);
            //db.Stations.Add(bs10);
            db.SaveChanges();

            Route r1 = new Route()
            {
                StartPoint = bs1, FinishPoint = bs2, Duration = 141.3, Distance = 652.7
            };
            Route r2 = new Route()
            {
                StartPoint = bs2, FinishPoint = bs1, Duration = 129.7, Distance = 606.1
            };

            db.Routes.Add(r1);
            db.Routes.Add(r2);
            db.SaveChanges();
        }
示例#3
0
        public static List <Route> AddRoutes(BicycleStation model, List <BicycleStation> allStations)
        {
            List <Route> newRoutes   = new List <Route>();
            var          baseAddress = new Uri("https://api.openrouteservice.org");

            using (var httpClient = new HttpClient {
                BaseAddress = baseAddress
            })
            {
                bool c = httpClient.DefaultRequestHeaders.TryAddWithoutValidation("accept", "application/json, application/geo+json, application/gpx+xml, img/png; charset=utf-8");
                httpClient.DefaultRequestHeaders.Authorization =
                    new AuthenticationHeaderValue("Authorization", api_key);


                httpClient.DefaultRequestHeaders.CacheControl = new CacheControlHeaderValue()
                {
                    NoCache = true
                };
                httpClient.DefaultRequestHeaders.Host = "api.openrouteservice.org";

                var client  = new RestClient("https://api.openrouteservice.org/v2/directions/cycling-regular");
                var request = new RestRequest(Method.POST);
                request.AddHeader("cache-control", "no-cache");
                request.AddHeader("Connection", "keep-alive");
                request.AddHeader("content-length", "61");
                request.AddHeader("accept-encoding", "gzip, deflate");
                request.AddHeader("Host", "api.openrouteservice.org");
                request.AddHeader("Postman-Token", "56194758-9eba-443a-b1bd-4acb440421f2,1418ba03-d208-4e07-85ff-a0030e059712");
                request.AddHeader("Cache-Control", "no-cache");
                request.AddHeader("Accept", "*/*");
                request.AddHeader("User-Agent", "PostmanRuntime/7.15.0");
                request.AddHeader("Authorization", "5b3ce3597851110001cf6248bc42568680c942a190d03a022ffb8878");
                request.AddHeader("Content-Type", "application/json");

                foreach (var station in allStations)
                {
                    if (station.Latitude == model.Latitude && station.Longitude == model.Longitude)
                    {
                        continue;
                    }
                    request.AddParameter("undefined", "{\"coordinates\":[[" + model.Longitude.ToString(System.Globalization.CultureInfo.InvariantCulture) + ","
                                         + model.Latitude.ToString(System.Globalization.CultureInfo.InvariantCulture) + "],["
                                         + station.Longitude.ToString(System.Globalization.CultureInfo.InvariantCulture) + ","
                                         + station.Latitude.ToString(System.Globalization.CultureInfo.InvariantCulture) + "]]}", ParameterType.RequestBody);
                    IRestResponse response = client.Execute(request);
                    var           temp     = (JObject)JsonConvert.DeserializeObject(response.Content);

                    var distance = temp["routes"][0]["summary"]["distance"].Value <double>();
                    var duration = temp["routes"][0]["summary"]["duration"].Value <double>();

                    newRoutes.Add(new Route()
                    {
                        StartPoint = model, FinishPoint = station, Distance = distance, Duration = duration
                    });

                    request.AddParameter("undefined", "{\"coordinates\":[[" + station.Longitude.ToString(System.Globalization.CultureInfo.InvariantCulture) + ","
                                         + station.Latitude.ToString(System.Globalization.CultureInfo.InvariantCulture) + "],["
                                         + model.Longitude.ToString(System.Globalization.CultureInfo.InvariantCulture) + ","
                                         + model.Latitude.ToString(System.Globalization.CultureInfo.InvariantCulture) + "]]}", ParameterType.RequestBody);
                    response = client.Execute(request);
                    temp     = (JObject)JsonConvert.DeserializeObject(response.Content);

                    distance = temp["routes"][0]["summary"]["distance"].Value <double>();
                    duration = temp["routes"][0]["summary"]["duration"].Value <double>();

                    newRoutes.Add(new Route()
                    {
                        StartPoint = station, FinishPoint = model, Distance = distance, Duration = duration
                    });
                }
            }
            return(newRoutes);
        }
        public async Task <IHttpActionResult> AddStation(BicycleStation model)
        {
            await _service.AddStation(model);

            return(Ok());
        }