public void listarClinicas(string Localidade) { Localidade = HttpUtility.UrlPathEncode(Localidade); string retorno = ""; retornoMineracao clinicas = new retornoMineracao(); HttpResponseMessage response = client.GetAsync("/maps/api/place/textsearch/json?input=clinica%20popular%20rio%20de%20janeiro&inputtype=textquery&fields=photos,formatted_address,name,rating,opening_hours,geometry,place_id,price_level,permanently_closed&key=AIzaSyBbjKpIM4wD3dj3W5VqGuCYMH6hdoGhXP8").Result; if (response.IsSuccessStatusCode) { retorno = response.Content.ReadAsStringAsync().Result; clinicas = JsonConvert.DeserializeObject <retornoMineracao>(retorno); foreach (var clinica in clinicas.results) { AmostraClinica c = new AmostraClinica(); string tel1 = "", tel2 = ""; var cliAux = db.AmostrasClinicas.FirstOrDefault(u => u.NomeFantasia == clinica.name); if (cliAux == null) { c.NomeFantasia = clinica.name; c.PlaceID = clinica.place_id; c.Lt = clinica.geometry.location.lat.ToString(); c.Lg = clinica.geometry.location.lng.ToString(); c.avaliacao = clinica.rating; c.EnderecoFormatado = clinica.formatted_address.Replace("Brazil", "Brasil");; c.IdEstado = 19; c.IdUsuario = 1; c.Ativo = true; HttpResponseMessage response1 = client.GetAsync("/maps/api/place/details/json?placeid=" + clinica.place_id + "&fields=formatted_phone_number,address_components,website,photo&key=AIzaSyBbjKpIM4wD3dj3W5VqGuCYMH6hdoGhXP8").Result; string retorno1 = ""; if (response1.IsSuccessStatusCode) { retorno1 = response1.Content.ReadAsStringAsync().Result; var aclinica = JsonConvert.DeserializeObject <retornoPlaceID>(retorno1); var cid = aclinica.result.address_components.Where(a => a.types.Any(s => s.Contains("administrative_area_level_2"))).FirstOrDefault(); string cida = cid != null ? cid.short_name : null; if (cida != null) { var cidade = db.Cidades.Where(d => d.Nome.ToUpper() == cida.ToUpper()).FirstOrDefault(); if (cidade != null) { c.IdCidade = cidade.Id; } } var bair = aclinica.result.address_components.Where(a => a.types.Any(s => s.Contains("locality"))).FirstOrDefault(); string bairri = bair != null ? bair.short_name : null; if (bairri != null) { var bairro = db.Bairros.Where(d => d.Nome.ToUpper().Contains(bairri.ToUpper()) && d.Nome.Contains("Rio de Janeiro")).FirstOrDefault(); if (bairro != null) { c.IdBairro = bairro.Id; } } c.LinkSite = aclinica.result.website; tel1 = aclinica.result.formatted_phone_number; tel2 = aclinica.result.international_phone_number; } db.AmostrasClinicas.Add(c); try { if (c.IdBairro != null && c.IdCidade != null && c.IdBairro > 0 && c.IdCidade > 0) { db.SaveChanges(); if (!string.IsNullOrEmpty(tel1)) { db.TelefonesClinicas.Add(new TelefonesClinica { Numero = tel1, IdAmostraClinica = c.Id }); } if (!string.IsNullOrEmpty(tel2)) { db.TelefonesClinicas.Add(new TelefonesClinica { Numero = tel2, IdAmostraClinica = c.Id }); } db.SaveChanges(); } } catch (Exception) { throw; } } c = null; } string proxPag = clinicas.next_page_token; for (int i = 0; i < 40; i++) { HttpResponseMessage prox = new HttpResponseMessage(); prox = client.GetAsync("/maps/api/place/nearbysearch/json?pagetoken=" + proxPag + "&key=AIzaSyBbjKpIM4wD3dj3W5VqGuCYMH6hdoGhXP8").Result; clinicas = JsonConvert.DeserializeObject <retornoMineracao>(retorno); foreach (var clinica in clinicas.results) { string telcli1 = "", telcli2 = ""; AmostraClinica c = new AmostraClinica(); var cliAux = db.AmostrasClinicas.FirstOrDefault(u => u.NomeFantasia == clinica.name); if (cliAux == null) { c.NomeFantasia = clinica.name; c.PlaceID = clinica.place_id; c.Lt = clinica.geometry.location.lat.ToString(); c.Lg = clinica.geometry.location.lng.ToString(); c.avaliacao = clinica.rating; c.EnderecoFormatado = clinica.formatted_address.Replace("Brazil", "Brasil"); c.IdEstado = 19; c.IdUsuario = 1; c.Ativo = true; HttpResponseMessage response1 = client.GetAsync("/maps/api/place/details/json?placeid=" + clinica.place_id + "&fields=formatted_phone_number,address_components,website,photo&key=AIzaSyBbjKpIM4wD3dj3W5VqGuCYMH6hdoGhXP8").Result; string retorno1 = ""; if (response1.IsSuccessStatusCode) { retorno1 = response1.Content.ReadAsStringAsync().Result; var aclinica = JsonConvert.DeserializeObject <retornoPlaceID>(retorno1); var cid = aclinica.result.address_components.Where(a => a.types.Any(s => s.Contains("administrative_area_level_2"))).FirstOrDefault(); string cida = cid != null ? cid.short_name : null; if (cida != null) { var cidade = db.Cidades.Where(d => d.Nome.ToUpper() == cida.ToUpper()).FirstOrDefault(); if (cidade != null) { c.IdCidade = cidade.Id; } } var bair = aclinica.result.address_components.Where(a => a.types.Any(s => s.Contains("locality"))).FirstOrDefault(); string bairri = bair != null ? bair.short_name : null; if (bairri != null) { var bairro = db.Bairros.Where(d => d.Nome.ToUpper().Contains(bairri.ToUpper()) && d.Nome.Contains("Rio de Janeiro")).FirstOrDefault(); if (bairro != null) { c.IdBairro = bairro.Id; } } c.LinkSite = aclinica.result.website; telcli1 = aclinica.result.formatted_phone_number; telcli2 = aclinica.result.international_phone_number; } db.AmostrasClinicas.Add(c); try { if (c.IdBairro != null && c.IdCidade != null && c.IdBairro > 0 && c.IdCidade > 0) { db.SaveChanges(); if (!string.IsNullOrEmpty(telcli1)) { db.TelefonesClinicas.Add(new TelefonesClinica { Numero = telcli1, IdAmostraClinica = c.Id }); } if (!string.IsNullOrEmpty(telcli2)) { db.TelefonesClinicas.Add(new TelefonesClinica { Numero = telcli2, IdAmostraClinica = c.Id }); } db.SaveChanges(); } } catch (Exception) { throw; } } } proxPag = clinicas.next_page_token; } } }
public ActionResult CadastrarClinica(AmostraClinicaViewModel dto, int[] servicos, int[] especialidades, string[] cel) { if (!ModelState.IsValid) { selectsCadastro(); return(View()); } var est = db.Estados.Find(dto.IdEstado); var cid = db.Cidades.Find(dto.IdCidade); var bair = db.Bairros.Find(dto.IdBairro); var identity = User.Identity as ClaimsIdentity; int id = Convert.ToInt32(identity.Claims.FirstOrDefault(c => c.Type == "Id").Value); AmostraClinica a = new AmostraClinica { EnderecoFormatado = dto.logradouro + ", " + dto.numero + " - " + dto.complemento + " - " + bair.Nome + ", " + cid.Nome + " - " + est.CodigoUf + ", " + dto.cepClinica + ", Brasil", NomeFantasia = dto.Nome, LinkSite = dto.Site, Lt = dto.Latitude, Lg = dto.Longitude, PrecoConsulta = dto.PrecoConsulta, PrecoExame = dto.PrecoExame, HoraAbertura = dto.HoraAbertura, HoraFechamento = dto.HoraFechamento, Pontos = dto.pontos, IdUsuario = id, IdEstado = dto.IdEstado, IdBairro = dto.IdBairro, IdCidade = dto.IdCidade }; List <Servico> servs = new List <Servico>(); foreach (int s in servicos) { servs.Add(db.Servicos.Find(s)); } List <Especialidade> esps = new List <Especialidade>(); foreach (int s in especialidades) { esps.Add(db.Especialidades.Find(s)); } a.Servicos = servs; a.Especialidades = esps; try { db.AmostrasClinicas.Add(a); db.SaveChanges(); List <TelefonesClinica> tels = new List <TelefonesClinica>(); foreach (string s in cel) { tels.Add(new TelefonesClinica { Numero = s }); } a.TelefonesClinicas = tels; db.SaveChanges(); } catch (Exception) { throw; } return(View("Index")); }