Exemple #1
0
        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());
            }
        }
Exemple #3
0
        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());
        }