//new List<Dictionary<Tuple<int, string>, Tuple<DateTime, float>>>()
        //{
        //    //new Dictionary<Tuple<int, string>, Tuple<DateTime, float>>(Automatic())
        //};

        //public ResidentE()
        //{
        //    while(true)
        //    {
        //        Automatic()
        //        Thread.Sleep(10000);
        //    }
        //}
        //public Dictionary<int, float> Resident(ICalculationFunctions f)
        //{
        //    List<float> lista1 = new ObradaPodataka().GetVrijednosti();
        //    List<int> lista2 = ObradaPodataka.GetIDFunkcija();
        //    Dictionary<int, float> retVal = new Dictionary<int, float>();

        //    for (int i = 0; i < lista2.Count; i++)
        //    {
        //        if (lista2[i] == 1)
        //            retVal.Add(1, f.Average(lista1));
        //        if (lista2[i] == 2)
        //            retVal.Add(2, f.Maximum(lista1));
        //        if (lista2[i] == 3)
        //            retVal.Add(3, f.Minimum(lista1));
        //    }

        //    return retVal;
        //}



        //za svaku funkciju (int) za svako podrucje (string) njena vrednost (float)

        public static Dictionary <Tuple <int, string>, Tuple <DateTime, float> > Automatic(List <PodaciIzBaze> podaci)
        {
            Dictionary <Tuple <int, string>, Tuple <DateTime, float> > retVal = new Dictionary <Tuple <int, string>, Tuple <DateTime, float> >();
            ICalculationFunctions f = new CalculationFunctions();
            //funkcije koje su ukljucene
            List <int> listaIDFunkcija = ObradaPodataka.GetIDFunkcija();
            //List<string> listaIDGeoPodrucja = ObradaPodataka.GetVrijednostiZaGeoPodrucje().Keys.ToList();

            Dictionary <string, List <float> > vrednostiZaOdredjenoPodrucje = ObradaPodataka.GetVrijednostiZaGeoPodrucje(podaci);

            foreach (var item1 in listaIDFunkcija)
            {
                foreach (var item2 in vrednostiZaOdredjenoPodrucje)
                {
                    if (item1 == 1)
                    {
                        retVal.Add(new Tuple <int, string>(1, item2.Key), new Tuple <DateTime, float>(DateTime.Now, f.Average(item2.Value)));
                    }
                    else if (item1 == 2)
                    {
                        retVal.Add(new Tuple <int, string>(2, item2.Key), new Tuple <DateTime, float>(DateTime.Now, f.Maximum(item2.Value)));
                    }
                    else
                    {
                        retVal.Add(new Tuple <int, string>(3, item2.Key), new Tuple <DateTime, float>(DateTime.Now, f.Minimum(item2.Value)));
                    }
                }
            }

            return(retVal);
        }
        public Dictionary <Tuple <int, string>, Tuple <DateTime, float> > Automatic(List <PodaciIzBaze> podaci)
        {
            ObradaPodatakaZaDB obrada = new ObradaPodatakaZaDB();
            GetValues          obr    = new GetValues();

            if (podaci == null)
            {
                throw new ArgumentNullException();
            }

            foreach (var item in podaci)
            {
                if (String.IsNullOrEmpty(item.ID))
                {
                    throw new ArgumentNullException();
                }
                if (item.Vrednost < 0 || item.Vrednost > float.MaxValue)
                {
                    throw new ArgumentOutOfRangeException();
                }
                if (item.Vreme > (SqlDateTime)DateTime.Now)
                {
                    throw new VremeException();
                }
            }

            ICalculationFunctions f = new CalculationFunctions();
            List <int>            listaIDFunkcija = obr.GetIDFunkcija();

            Dictionary <string, List <float> > vrednostiZaOdredjenoPodrucje   = obr.GetVrijednostiZaGeoPodrucje(podaci);
            Dictionary <Tuple <int, string>, Tuple <DateTime, float> > retVal = new Dictionary <Tuple <int, string>, Tuple <DateTime, float> >();

            foreach (var item1 in listaIDFunkcija)
            {
                foreach (var item2 in vrednostiZaOdredjenoPodrucje)
                {
                    if (item1 == 1)
                    {
                        retVal.Add(new Tuple <int, string>(1, item2.Key), new Tuple <DateTime, float>(DateTime.Now, f.Average(item2.Value)));
                    }
                    else if (item1 == 2)
                    {
                        retVal.Add(new Tuple <int, string>(2, item2.Key), new Tuple <DateTime, float>(DateTime.Now, f.Maximum(item2.Value)));
                    }
                    else if (item1 == 3)
                    {
                        retVal.Add(new Tuple <int, string>(3, item2.Key), new Tuple <DateTime, float>(DateTime.Now, f.Minimum(item2.Value)));
                    }
                }
            }

            return(retVal);
        }