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(); }
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()); }