public static double TemperaturaAtual()
        {
            //SqlConnection conn = new SqlConnection(@"Server=tcp:tab132.database.windows.net,1433;Initial Catalog=esporte;Persist Security Info=False;User ID=mateus383;Password=123456sS;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;");
            SqlConnection conn = Default.conecao();

            using (conn)
            {
                conn.Open();

                using (SqlCommand cmd = new SqlCommand("SELECT temperatura FROM Temperatura WHERE cod_temperatura = (SELECT MAX(cod_Temperatura) FROM temperatura)", conn))
                {
                    using (SqlDataReader dr = cmd.ExecuteReader())
                    {
                        if (dr.Read() == true)
                        {
                            return(double.Parse(dr["temperatura"].ToString()));
                        }
                        else
                        {
                            return(0);
                        }
                    }
                }
            }
        }
        public static double minimo()
        {// metodo pra pegar a temp minima
            int           medea = 0;
            int           a     = 0;
            SqlConnection conn  = Default.conecao();
            {
                conn.Open();

                using (SqlCommand cmd = new SqlCommand("SELECT MAX ( cod_temperatura) FROM Temperatura", conn))
                {
                    using (SqlDataReader dr = cmd.ExecuteReader())
                    {
                        if (dr.Read() == true)
                        {
                            a     = dr.GetInt32(0);
                            medea = a - 60;
                            //aqui eu fiz um algoritimo pra ele pegar a ultima temperatura dada,
                            // e a ultima a 60 segundos atras
                        }
                        else
                        {
                            return(0);
                        }
                        conn.Close();
                    }
                }
                conn.Open();

                using (SqlCommand cmd = new SqlCommand($"SELECT min(temperatura) FROM Temperatura WHERE cod_temperatura between {medea} and {a}", conn))
                {
                    using (SqlDataReader dr = cmd.ExecuteReader())
                    {
                        if (dr.Read() == true)
                        {
                            double po = dr.GetDouble(0);
                            conn.Close();
                            return(po);

                            //continuação do que ue falei acima, ele vai verificar as temperaturas entre a ultima
                            //temperatura dada e a ultima 60segundos atras, e vai pegar o minimo entre elas
                        }
                        else
                        {
                            return(0);
                        }
                    }
                }
            }
        }
        public static double Media()
        {
            int           medea = 0;
            int           a     = 0;
            SqlConnection conn  = Default.conecao();
            {
                conn.Open();

                using (SqlCommand cmd = new SqlCommand("SELECT MAX ( cod_temperatura) FROM Temperatura", conn))
                {
                    using (SqlDataReader dr = cmd.ExecuteReader())
                    {
                        if (dr.Read() == true)
                        {
                            a     = dr.GetInt32(0);
                            medea = a - 60;

                            //aqui eu fiz um algoritimo pra ele pegar a ultima temperatura dada,
                            // e a ultima a 60 segundos atras
                        }
                        else
                        {
                            return(0);
                        }
                    }
                }

                using (SqlCommand cmd = new SqlCommand($"SELECT round(avg(temperatura),2) FROM Temperatura WHERE cod_temperatura between {medea} and {a}", conn))
                {
                    using (SqlDataReader dr = cmd.ExecuteReader())
                    {
                        if (dr.Read() == true)
                        {
                            double po = dr.GetDouble(0);
                            conn.Close();
                            return(po);

                            //aqui o comando vai dar diretamente a media entre a ultima temperatura dada e a ultima a 60
                            //segundos atras, e logo em seguida ele só ira deixar 2 casas pós virgula
                        }
                        else
                        {
                            return(0);
                        }
                    }
                }
            }
        }
        public static double TemperaturaAtual()
        {
            SqlConnection conn = Default.conecao();
            {
                conn.Open();

                using (SqlCommand cmd = new SqlCommand("SELECT temperatura FROM Temperatura WHERE cod_temperatura = (SELECT MAX(cod_Temperatura) FROM temperatura)", conn))
                {
                    using (SqlDataReader dr = cmd.ExecuteReader())
                    {
                        if (dr.Read() == true)
                        {
                            return(double.Parse(dr["temperatura"].ToString()));
                        }
                        else
                        {
                            return(0);
                        }
                    }
                }
            }
        }
        public static double Mediana()
        {
            double xa = 0, b = 0, medea = 0;

            SqlConnection conn = Default.conecao();
            {
                conn.Open();
                using (SqlCommand cmd = new SqlCommand("SELECT MAX (cod_temperatura) FROM Temperatura", conn))
                {
                    using (SqlDataReader dr = cmd.ExecuteReader())
                    {
                        if (dr.Read() == true)
                        {
                            xa = dr.GetInt32(0) - 30;

                            //como só iremos pegar a temperatura de 1 em 1 minuto, ou seja, a cada 60 segundos
                            // eu coloquei pra pegar a mediana direto.
                        }
                        else
                        {
                            return(0);
                        }
                    }
                }

                using (SqlCommand cmd = new SqlCommand($"SELECT temperatura FROM Temperatura WHERE cod_temperatura = {xa}", conn))
                {
                    using (SqlDataReader dr = cmd.ExecuteReader())
                    {
                        if (dr.Read() == true)
                        {
                            medea = dr.GetDouble(0);

                            // aqui ele vai pegar a temperatura mediana
                        }
                        else
                        {
                            cmd.ExecuteNonQuery(); return(1001);
                        }
                    }
                }
                using (SqlCommand cmd = new SqlCommand($"SELECT temperatura FROM Temperatura WHERE cod_temperatura = {xa + 1}", conn))
                {
                    using (SqlDataReader dr = cmd.ExecuteReader())
                    {
                        if (dr.Read() == true)
                        {
                            b = dr.GetDouble(0);
                            // e aqui ele vai pegar a mediana 31, que como é numero par ele ira
                            // fazer o 30+31 (que é o meio do 60 mas é par entao o meio é duplo)
                        }
                        else
                        {
                            return(1001);
                        }
                    }
                }
                conn.Close();
                return((medea + b) / 2);
                // esse é o calculo da mediana par
            }
        }
        protected void registrovagao_Click(object sender, EventArgs e)
        {
            Session["teste"] = "o";
            hiddenmodal.Text = Session["teste"].ToString();

            if (nomevagao.Text.Length == 0 || quantidade.Text.Length == 0)
            {
                lebel.Text = "preencha todos os campos";
                return;
            } // validando campo vazio

            int quantidadeDeVagao;

            if (int.TryParse(quantidade.Text, out quantidadeDeVagao) == false)
            {
                lebel.Text = "coloque um numero";

                // O return encerra a execução por aqui
                return;
            }
            if (quantidadeDeVagao > 8)
            {
                lebel.Text = "muitos vagoes";
                return;
            }
            if (trens.SelectedValue == "0")
            {
                lebel.Text = "preencha um trem";
                return;
            }// aqui valida se ele preencheu o dropdown
            int    codtrem;
            string opcoesDeTrem = trens.SelectedValue; //seleciona o ID do dropdown

            int.TryParse(opcoesDeTrem, out codtrem); // transforma o ID do drowpdown em int
            contador = 0;
            while (contador < quantidadeDeVagao)
            {
                contador = contador + 1;



                using (SqlConnection conn = Default.conecao())
                {
                    conn.Open();

                    using (SqlCommand cmd = new SqlCommand("INSERT INTO Vagao VALUES (@cod_trem,@nome_vagao)", conn))
                    {
                        // string[] nomesVagoes = new string[50  + contador];

                        string nomesVagoes = nomevagao.Text;

                        //nomesVagoes = nomesVagoes[contador] +" "+ contador;
                        cmd.Parameters.AddWithValue("@cod_trem", codtrem);
                        //seleciona o trem pelo dropdown
                        cmd.Parameters.AddWithValue("@nome_vagao", nomesVagoes + " " + contador);
                        //gera o nome do vagao, e se for registrado ira começar o vetor


                        lebel.Text = "vagao cadastrado com sucesso!";
                        cmd.ExecuteNonQuery();
                    }
                    //conta a quantidade de vagoes que foram feitos e classifica: trem1,trem2...trem7
                    using (SqlCommand cmd = new SqlCommand("select max(cod_vagao) from arduino", conn))
                    {
                        using (SqlDataReader reader = cmd.ExecuteReader())
                        {
                            while (reader.Read() == true)
                            {
                                conta = reader.GetInt32(0);
                                // cmd.ExecuteNonQuery();
                            }
                        }
                    }

                    using (SqlCommand cmd = new SqlCommand("INSERT INTO arduino VALUES (@cod_vagao,@cod_trem)", conn))
                    {
                        conta++;

                        string nomesVagoes = nomevagao.Text;
                        cmd.Parameters.AddWithValue("@cod_vagao", conta);
                        //seleciona o trem pelo dropdown
                        cmd.Parameters.AddWithValue("@cod_trem", codtrem);
                        //gera o nome do vagao, e se for registrado ira começar o vetor



                        cmd.ExecuteNonQuery();
                    }
                }
            }
            conn.Close();
        }