public void ApiDohvatStatistike(int idGrad, string grad, string pocetak, string kraj) { string apiKljuc = "8e50al2m"; HttpWebRequest apiRequest = WebRequest.Create("https://api.meteostat.net/v1/history/hourly?" + "station=" + rijecnikGradovi[grad] + "&start=" + pocetak + "&end=" + kraj + "&time_zone=Europe/Zagreb&time_format=Y-m-d%20H:i&key=" + apiKljuc) as HttpWebRequest; string apiOdgovor = ""; using (HttpWebResponse response = apiRequest.GetResponse() as HttpWebResponse) { StreamReader citac = new StreamReader(response.GetResponseStream()); apiOdgovor = citac.ReadToEnd(); } KorijenskiStatistika listaOdgovor = JsonConvert.DeserializeObject <KorijenskiStatistika>(apiOdgovor); List <Statistika> listaStatistika = new List <Statistika>(); Statistika prijasniRed = new Statistika(); prijasniRed.datum = new DateTime(1990, 1, 1, 7, 0, 0); foreach (var clan in listaOdgovor.data) { Statistika redStatistika = new Statistika(); redStatistika.datum = DateTime.Parse(clan.time_local); redStatistika.grad = idGrad; if (clan.windspeed != null) { redStatistika.brzinaVjetra = double.Parse(clan.windspeed.ToString()); } else { redStatistika.brzinaVjetra = 0; } if (clan.precipitation != null) { redStatistika.kisa = double.Parse(clan.precipitation.ToString()); } else { redStatistika.kisa = 0; } if (clan.pressure != null) { redStatistika.pritisak = double.Parse(clan.pressure.ToString()); } else { redStatistika.pritisak = 0; } if (clan.winddirection != null) { redStatistika.smjerVjetra = double.Parse(clan.winddirection.ToString()); } else { redStatistika.smjerVjetra = 0; } if (clan.snowdepth != null) { redStatistika.snijeg = double.Parse(clan.snowdepth.ToString()); } else { redStatistika.snijeg = 0; } if (clan.temperature != null) { redStatistika.temperatura = double.Parse(clan.temperature.ToString()); } else { redStatistika.temperatura = 0; } if (clan.humidity != null) { redStatistika.vlaznost = double.Parse(clan.humidity.ToString()); } else { redStatistika.vlaznost = 0; } if (prijasniRed.datum != redStatistika.datum) { listaStatistika.Add(redStatistika); } prijasniRed = redStatistika; } if (listaStatistika.Count() > 0) { using (BazaVremProgEntities kontekst = new BazaVremProgEntities()) { kontekst.Statistika.AddRange(listaStatistika); kontekst.SaveChanges(); } } }
public void ProvjeraISpremanje(List <Prognoza> listaPrognoza) { DateTime datum = DateTime.Now.AddHours(-2); List <Prognoza> progUBazi = new List <Prognoza>(); int grad = listaPrognoza.First().grad; using (BazaVremProgEntities kontekst = new BazaVremProgEntities()) { progUBazi = kontekst.Prognoza.Where(c => c.datum >= datum && c.grad == grad).ToList(); } if (progUBazi.Count == 0) { using (BazaVremProgEntities kontekst = new BazaVremProgEntities()) { kontekst.Prognoza.AddRange(listaPrognoza); kontekst.SaveChanges(); } } else if (progUBazi.Count == listaPrognoza.Count - 1) { Prognoza zadnjiUListi = listaPrognoza.Last(); listaPrognoza.RemoveAt(listaPrognoza.Count - 1); string bazaLista = string.Join(";", progUBazi); string dohvatLista = string.Join(";", listaPrognoza); if (!(bazaLista == dohvatLista)) { using (BazaVremProgEntities kontekst = new BazaVremProgEntities()) { foreach (Prognoza red in listaPrognoza) { kontekst.Prognoza.Add(red); kontekst.Entry(red).State = System.Data.Entity.EntityState.Modified; } kontekst.SaveChanges(); } } using (BazaVremProgEntities kontekst = new BazaVremProgEntities()) { kontekst.Prognoza.Add(zadnjiUListi); kontekst.SaveChanges(); } } else if (progUBazi.Count == listaPrognoza.Count) { string bazaLista = string.Join(";", progUBazi); string dohvatLista = string.Join(";", listaPrognoza); if (!(bazaLista == dohvatLista)) { using (BazaVremProgEntities kontekst = new BazaVremProgEntities()) { foreach (Prognoza red in listaPrognoza) { kontekst.Prognoza.Add(red); kontekst.Entry(red).State = System.Data.Entity.EntityState.Modified; } kontekst.SaveChanges(); } } } else { using (BazaVremProgEntities kontekst = new BazaVremProgEntities()) { foreach (Prognoza red in listaPrognoza) { if (kontekst.Prognoza.Any(e => e.datum == red.datum && e.grad == red.grad)) { kontekst.Prognoza.Add(red); kontekst.Entry(red).State = System.Data.Entity.EntityState.Modified; } else { kontekst.Prognoza.Add(red); } } kontekst.SaveChanges(); } } }