public Ipma.DadosTemperatura3Dias[] GetTemperatura(string local, Ipma.DadosIdentificador[] objectoDistritos) { Ipma.DadosTemperatura3Dias[] _objectoTemperaturas = new Ipma.DadosTemperatura3Dias[5]; string globalIdLocal = ""; for (int i = 0; i < objectoDistritos.Length - 1; i++) { if (local == objectoDistritos[i].local || local == objectoDistritos[i].local.ToLower()) { globalIdLocal = objectoDistritos[i].GlobalIdLocal; } } if (globalIdLocal == "") { //Por defeito assume Lisboa globalIdLocal = "1110600"; } using (var w = new WebClient()) { var json_data = string.Empty; // attempt to download JSON data as a string try { System.Console.WriteLine("A obter: http://api.ipma.pt/open-data/forecast/meteorology/cities/daily/" + globalIdLocal + ".json"); json_data = w.DownloadString("http://api.ipma.pt/open-data/forecast/meteorology/cities/daily/" + globalIdLocal + ".json"); var result = JsonConvert.DeserializeObject <RootObject2>(json_data); var precipitaProb = result.Data.Select(p => p.precipitaProb).ToList(); var tMin = result.Data.Select(p => p.tMin).ToList(); var tMax = result.Data.Select(p => p.tMax).ToList(); var predWindDir = result.Data.Select(p => p.predWindDir).ToList(); var idWeatherType = result.Data.Select(p => p.idWeatherType).ToList(); var classWindSpeed = result.Data.Select(p => p.classWindSpeed).ToList(); var longitude = result.Data.Select(p => p.longitude).ToList(); var forecastDate = result.Data.Select(p => p.forecastDate).ToList(); var latitude = result.Data.Select(p => p.latitude).ToList(); foreach (var element in precipitaProb.Select((value, i) => new { i, value })) { _objectoTemperaturas[element.i] = new Ipma.DadosTemperatura3Dias(); _objectoTemperaturas[element.i].precipitaProb = element.value; } foreach (var element in tMin.Select((value, i) => new { i, value })) { _objectoTemperaturas[element.i].tMin = element.value; } foreach (var element in tMax.Select((value, i) => new { i, value })) { _objectoTemperaturas[element.i].tMax = element.value; } foreach (var element in predWindDir.Select((value, i) => new { i, value })) { _objectoTemperaturas[element.i].predWindDir = element.value; } foreach (var element in idWeatherType.Select((value, i) => new { i, value })) { _objectoTemperaturas[element.i].idWeatherType = element.value; } foreach (var element in classWindSpeed.Select((value, i) => new { i, value })) { _objectoTemperaturas[element.i].classWindSpeed = element.value; } foreach (var element in longitude.Select((value, i) => new { i, value })) { _objectoTemperaturas[element.i].longitude = element.value; } foreach (var element in forecastDate.Select((value, i) => new { i, value })) { _objectoTemperaturas[element.i].forecastDate = element.value; } foreach (var element in latitude.Select((value, i) => new { i, value })) { _objectoTemperaturas[element.i].latitude = element.value; } } catch (Exception) { System.Console.WriteLine("Ocorreu um erro a tentar obter o JSON do IPMA"); } } return(_objectoTemperaturas); }
public async static void PrepareQuestionnaires(MessageEventArgs e) { if (e.Message.Text.First().ToString() == "/") { _respostas.Abuso(e); } if (e.Message.Text.ToLower().Contains("!temperatura")) { try { Ipma.DadosTemperatura3Dias[] _temperaturas = new Ipma.DadosTemperatura3Dias[5]; Ipma.DadosIdentificador[] _identificador = new Ipma.DadosIdentificador[30]; bool vazio = true; string localidade = e.Message.Text.ToLower().Substring(12, e.Message.Text.ToLower().Length - 12); localidade = localidade.Replace(" ", ""); if (localidade == "") { vazio = true; } else { vazio = false; } if (vazio == false) { string resposta = ""; _identificador = _ipma.GetDistritos(); _temperaturas = _ipma.GetTemperatura(localidade, _identificador); resposta += "*" + localidade.ToUpper() + "*" + ":" + Environment.NewLine; for (int i = 0; i < _temperaturas.Length; i++) { resposta += _temperaturas[i].forecastDate + ":" + Environment.NewLine; resposta += "*Probabilidade de chuva:* " + _temperaturas[i].precipitaProb + "%" + Environment.NewLine; resposta += "*Max:* " + _temperaturas[i].tMax + "°C *Min:* " + _temperaturas[i].tMin + "°C" + Environment.NewLine; resposta += Environment.NewLine; } _respostas.Temperatura(e, resposta); } } catch (System.NullReferenceException) { } } if (e.Message.Text.ToLower() == "!mensagens") { string resposta = await _get.getMensagens(e); System.Console.WriteLine(e.Message.From.FirstName + " " + e.Message.From.LastName + " solicitou o numero de mensagens, o resultado foi: " + resposta); _respostas.Mensagens(e, resposta); } if (e.Message.Text.ToLower() == "!noticias") { System.Console.WriteLine(e.Message.Chat.Id); _respostas.Noticias(e); } if (e.Message.Text.ToLower() == "!horas") { _respostas.Horas(e); } if (e.Message.Text.ToLower() == "!euromilhoes") { _respostas.EuroMilhoes(e); } if (e.Message.Text.ToLower() == "!admins") { _respostas.Admins(e); } if (e.Message.Text.ToLower() == "!convite") { _respostas.Convite(e); } if ((e.Message.Text.ToLower() == "!comandos") || (e.Message.Text.ToLower() == "! comandos")) { _respostas.Comandos(e); System.Console.WriteLine("O User " + e.Message.From.FirstName + " " + e.Message.From.LastName + " solicitou a lista de comandos."); } if (e.Message.Text.ToLower().Contains("melhor grupo")) { await bot.SendTextMessageAsync(e.Message.Chat.Id, "Pussylga com certeza!"); } if (e.Message.Text.ToString() != null) { DateTime myDateTime = DateTime.Now; string sqlFormattedDate = myDateTime.ToString("yyyy-MM-dd HH:mm:ss"); _basedados.Inserir("INSERT INTO chat (idUser, conversa, data,user) VALUES ('" + e.Message.Chat.Id.ToString() + "','" + e.Message.Text + "','" + sqlFormattedDate + "','" + e.Message.From + "')"); System.Console.WriteLine(sqlFormattedDate + " : " + e.Message.From + " enviou: " + e.Message.Text); string data = await _basedados.Verificar("select nome from membros where nome ='" + e.Message.From + "'"); if (data == null) { _basedados.Inserir("insert into membros (nome, dataEntrada) values ('" + e.Message.From + "','" + sqlFormattedDate + "')"); } } }