示例#1
0
        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();
                }
            }
        }
示例#2
0
        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();
                }
            }
        }