public List <ModelPrognoza> DohvatZaPrikaz(string grad, string vrstaPrognoze) { List <ModelPrognoza> odgovor = new List <ModelPrognoza>(); Gradovi trazeniGrad = new Gradovi(); using (BazaVremProgEntities kontekst = new BazaVremProgEntities()) { trazeniGrad = kontekst.Gradovi.Where(c => c.imeGrad == grad).FirstOrDefault(); } if (trazeniGrad != null) { List <Prognoza> prognoza = new List <Prognoza>(); if (vrstaPrognoze == "Jednodnevna") { DateTime datumPocetak = DateTime.Now.AddHours(-2); DateTime datumKraj = DateTime.Now.AddHours(22); using (BazaVremProgEntities kontekst = new BazaVremProgEntities()) { prognoza = kontekst.Prognoza.Where(c => c.datum >= datumPocetak && c.datum <= datumKraj && c.grad == trazeniGrad.id).ToList(); } } else if (vrstaPrognoze == "Peterodnevna") { DateTime datumPocetak = DateTime.Now.AddHours(-2); using (BazaVremProgEntities kontekst = new BazaVremProgEntities()) { prognoza = kontekst.Prognoza.Where(c => c.datum >= datumPocetak && c.grad == trazeniGrad.id).ToList(); } } if (prognoza.Count > 0) { foreach (Prognoza zapis in prognoza) { ModelPrognoza zapisModel = new ModelPrognoza(); zapisModel.vrijeme = zapis.vrijeme; zapisModel.temperatura = zapis.temperatura; zapisModel.grad = grad; zapisModel.datum = zapis.datum.ToString(); zapisModel.vlaznost = zapis.vlaznost; zapisModel.padalineKisa = zapis.kisa; zapisModel.padalineSnijeg = zapis.snijeg; zapisModel.ikona = zapis.ikona; zapisModel.brojSmjerVjetra = zapis.smjerVjetra; zapisModel.brzinaVjetra = zapis.brzinaVjetra; if (zapisModel.brzinaVjetra != 0) { if (zapis.smjerVjetra <= 30 || zapis.smjerVjetra >= 330) { zapisModel.smjerVjetra = "S"; } else if (zapis.smjerVjetra > 30 && zapis.smjerVjetra < 60) { zapisModel.smjerVjetra = "SI"; } else if (zapis.smjerVjetra >= 60 && zapis.smjerVjetra <= 120) { zapisModel.smjerVjetra = "I"; } else if (zapis.smjerVjetra > 120 && zapis.smjerVjetra < 150) { zapisModel.smjerVjetra = "JI"; } else if (zapis.smjerVjetra >= 150 && zapis.smjerVjetra <= 210) { zapisModel.smjerVjetra = "J"; } else if (zapis.smjerVjetra > 210 && zapis.smjerVjetra < 240) { zapisModel.smjerVjetra = "JZ"; } else if (zapis.smjerVjetra >= 240 && zapis.smjerVjetra <= 300) { zapisModel.smjerVjetra = "Z"; } else { zapisModel.smjerVjetra = "SZ"; } } odgovor.Add(zapisModel); } } } return(odgovor); }
public double DohvatStatistike(string godina, string podatak, string statistika, string grad, string mjesec) { double rezultat = 0; int brojDana = DateTime.DaysInMonth(int.Parse(godina), int.Parse(mjesec)); string pocetakDatum = godina + "-" + mjesec + "-01"; string krajDatum = godina + "-" + mjesec + "-" + brojDana.ToString(); DateTime pocetakTD = DateTime.Parse(pocetakDatum + " 00:00:00"); DateTime krajTD = DateTime.Parse(krajDatum + " 23:00:00"); int idGrad; bool postoji; using (BazaVremProgEntities kontekst = new BazaVremProgEntities()) { idGrad = kontekst.Gradovi.Where(l => l.imeGrad == grad).Select(l => l.id).FirstOrDefault(); postoji = kontekst.Statistika.Any(e => e.datum >= pocetakTD && e.datum <= krajTD && e.grad == idGrad); } if (!postoji) { ApiDohvatStatistike(idGrad, grad, pocetakDatum, krajDatum); } using (BazaVremProgEntities kontekst = new BazaVremProgEntities()) { if (statistika == "max") { if (podatak == "temperatura") { rezultat = kontekst.Statistika.Where(p => p.datum >= pocetakTD && p.datum <= krajTD && p.grad == idGrad).Select(p => p.temperatura).DefaultIfEmpty(0).Max(); } else if (podatak == "pritisak") { rezultat = kontekst.Statistika.Where(p => p.datum >= pocetakTD && p.datum <= krajTD && p.grad == idGrad).Select(p => p.pritisak).DefaultIfEmpty(0).Max(); } else if (podatak == "vlaznost") { rezultat = kontekst.Statistika.Where(p => p.datum >= pocetakTD && p.datum <= krajTD && p.grad == idGrad).Select(p => p.vlaznost).DefaultIfEmpty(0).Max(); } else if (podatak == "padaline") { rezultat = kontekst.Statistika.Where(p => p.datum >= pocetakTD && p.datum <= krajTD && p.grad == idGrad).Select(p => p.kisa).DefaultIfEmpty(0).Max(); } else if (podatak == "brzinaVjetra") { rezultat = kontekst.Statistika.Where(p => p.datum >= pocetakTD && p.datum <= krajTD && p.grad == idGrad).Select(p => p.brzinaVjetra).DefaultIfEmpty(0).Max(); } else if (podatak == "smjerVjetra") { rezultat = kontekst.Statistika.Where(p => p.datum >= pocetakTD && p.datum <= krajTD && p.grad == idGrad).Select(p => p.smjerVjetra).DefaultIfEmpty(0).Max(); } } else if (statistika == "min") { if (podatak == "temperatura") { rezultat = kontekst.Statistika.Where(p => p.datum >= pocetakTD && p.datum <= krajTD && p.grad == idGrad).Select(p => p.temperatura).DefaultIfEmpty(0).Min(); } else if (podatak == "pritisak") { rezultat = kontekst.Statistika.Where(p => p.datum >= pocetakTD && p.datum <= krajTD && p.grad == idGrad).Select(p => p.pritisak).DefaultIfEmpty(0).Min(); } else if (podatak == "vlaznost") { rezultat = kontekst.Statistika.Where(p => p.datum >= pocetakTD && p.datum <= krajTD && p.grad == idGrad).Select(p => p.vlaznost).DefaultIfEmpty(0).Min(); } else if (podatak == "padaline") { rezultat = kontekst.Statistika.Where(p => p.datum >= pocetakTD && p.datum <= krajTD && p.grad == idGrad).Select(p => p.kisa).DefaultIfEmpty(0).Min(); } else if (podatak == "brzinaVjetra") { rezultat = kontekst.Statistika.Where(p => p.datum >= pocetakTD && p.datum <= krajTD && p.grad == idGrad).Select(p => p.brzinaVjetra).DefaultIfEmpty(0).Min(); } else if (podatak == "smjerVjetra") { rezultat = kontekst.Statistika.Where(p => p.datum >= pocetakTD && p.datum <= krajTD && p.grad == idGrad).Select(p => p.smjerVjetra).DefaultIfEmpty(0).Min(); } } else { if (podatak == "temperatura") { rezultat = kontekst.Statistika.Where(p => p.datum >= pocetakTD && p.datum <= krajTD && p.grad == idGrad).Select(p => p.temperatura).DefaultIfEmpty(0).Average(); } else if (podatak == "pritisak") { rezultat = kontekst.Statistika.Where(p => p.datum >= pocetakTD && p.datum <= krajTD && p.grad == idGrad).Select(p => p.pritisak).DefaultIfEmpty(0).Average(); } else if (podatak == "vlaznost") { rezultat = kontekst.Statistika.Where(p => p.datum >= pocetakTD && p.datum <= krajTD && p.grad == idGrad).Select(p => p.vlaznost).DefaultIfEmpty(0).Average(); } else if (podatak == "padaline") { rezultat = kontekst.Statistika.Where(p => p.datum >= pocetakTD && p.datum <= krajTD && p.grad == idGrad).Select(p => p.kisa).DefaultIfEmpty(0).Average(); } else if (podatak == "brzinaVjetra") { rezultat = kontekst.Statistika.Where(p => p.datum >= pocetakTD && p.datum <= krajTD && p.grad == idGrad).Select(p => p.brzinaVjetra).DefaultIfEmpty(0).Average(); } else if (podatak == "smjerVjetra") { rezultat = kontekst.Statistika.Where(p => p.datum >= pocetakTD && p.datum <= krajTD && p.grad == idGrad).Select(p => p.smjerVjetra).DefaultIfEmpty(0).Average(); } } } return(Math.Round(rezultat, 2)); }
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(); } } }
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 ApiDohvat() { List <Gradovi> gradovi = new List <Gradovi>(); using (BazaVremProgEntities kontekst = new BazaVremProgEntities()) { gradovi = kontekst.Gradovi.ToList(); } int brojGradova = gradovi.Count(); for (int i = 0; i < brojGradova; i++) { Gradovi trenutniGrad = new Gradovi(); trenutniGrad = gradovi[i]; string grad = trenutniGrad.imeGrad; string apiKljuc = "29162b051f109cc1be64040092ba2918"; HttpWebRequest apiRequest = WebRequest.Create("http://api.openweathermap.org/data/2.5/forecast?q=" + grad + ",hr&appid=" + apiKljuc + "&units=metric&lang=hr") as HttpWebRequest; string apiOdgovor = ""; using (HttpWebResponse response = apiRequest.GetResponse() as HttpWebResponse) { //HttpWebResponse response = apiRequest.GetResponse() as HttpWebResponse; StreamReader citac = new StreamReader(response.GetResponseStream()); apiOdgovor = citac.ReadToEnd(); } KorjenskiObjekt listaOdgovor = JsonConvert.DeserializeObject <KorjenskiObjekt>(apiOdgovor); List <Prognoza> listaPrognoza = new List <Prognoza>(); foreach (var clan in listaOdgovor.list) { Prognoza zaDodati = new Prognoza(); zaDodati.datum = DateTime.Parse(clan.dt_txt); zaDodati.grad = trenutniGrad.id; zaDodati.temperatura = clan.main.temp; zaDodati.vlaznost = clan.main.humidity; zaDodati.vrijeme = clan.weather[0].description; zaDodati.ikona = clan.weather[0].icon; if (clan.rain != null) { zaDodati.kisa = clan.rain.kolicinaKise; } else { zaDodati.kisa = 0; } if (clan.snow != null) { zaDodati.snijeg = clan.snow.kolicinaSnijega; } else { zaDodati.snijeg = 0; } if (clan.wind != null) { zaDodati.smjerVjetra = clan.wind.deg; zaDodati.brzinaVjetra = clan.wind.speed; } listaPrognoza.Add(zaDodati); } ProvjeraISpremanje(listaPrognoza); if (i % 56 == 0 && i != 0) { Thread.Sleep(60000); } } return; }