public async Task <IActionResult> GetCoordinates([FromBody] PlaceFormModel model) { CoordinatesDataModel data = await _googleCoordinates.GetCoordByPlace(model); if (data.Location == null) { data.Location = "Error"; data.Latitude = 0; data.Longitude = 0; } return(Ok(data)); }
public async Task <CoordinatesDataModel> GetCoordByPlace(PlaceFormModel model) { string apiUrl = _configuration["GeocodingApiUrl"]; string apiKey = _configuration["GeocodingApiKey"]; try { string url = $"{apiUrl}?address={model.Place}" + (string.IsNullOrEmpty(model.City) ? "" : $"+{model.City}") + $"&key={apiKey}"; string data; var dataModel = new CoordinatesDataModel(); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); WebResponse resp = await request.GetResponseAsync(); HttpWebResponse response = (HttpWebResponse)resp; if (response.StatusCode == HttpStatusCode.OK) { using (Stream stream = response.GetResponseStream()) { using (StreamReader reader = new StreamReader(stream)) { data = reader.ReadToEnd(); } } if (JsonConvert.DeserializeObject <dynamic>(data).status == "OK") { string lat = JsonConvert.DeserializeObject <dynamic>(data).results[0].geometry.location.lat.ToString(); string lng = JsonConvert.DeserializeObject <dynamic>(data).results[0].geometry.location.lng.ToString(); dataModel.Location = JsonConvert.DeserializeObject <dynamic>(data).results[0].formatted_address.ToString(); dataModel.Latitude = double.Parse(lat); dataModel.Longitude = double.Parse(lng); } } response.Close(); return(dataModel); } catch { return(new CoordinatesDataModel()); } }
public IHttpActionResult Coordinates(CoordinatesDataModel model) { if (model == null || !ModelState.IsValid) { try { return(this.BadRequest(ModelState.Values.FirstOrDefault().Errors.FirstOrDefault().ErrorMessage)); } catch (Exception) { return(this.BadRequest("Invalid set coordinates data")); } } var user = this.Data.Users.Find(User.Identity.GetUserId()); user.Longitude = model.Longitude; user.Latitude = model.Latitude; this.Data.Users.Update(user); this.Data.SaveChanges(); return(this.Ok()); }