Пример #1
0
        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);
        }
Пример #2
0
        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));
        }
Пример #3
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();
                }
            }
        }
Пример #4
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();
                }
            }
        }
Пример #5
0
        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;
        }