//verificando se o produto ja esta cadastrado
        public bool Validate(DadosProduto Produto)
        {
            using (var connection = GetConnection())
            {
                try
                {
                    connection.Open();
                    command.Connection  = connection;
                    command.CommandText = "SELECT codigo FROM tb_produto WHERE codigo = @codigo";
                    command.CommandType = CommandType.Text;

                    SqlParameter ParCode = new SqlParameter();
                    ParCode.ParameterName = "@codigo";
                    ParCode.Value         = Produto.Codigo;
                    ParCode.SqlDbType     = SqlDbType.VarChar;
                    ParCode.Size          = 50;
                    command.Parameters.Add(ParCode);
                    var result = command.ExecuteScalar();
                    if (result != null)
                    {
                        return(true);
                    }
                }
                catch (Exception ex)
                {
                }
                return(false);
            }
        }
        //pesquisando
        public DataTable PesquisaProduto(DadosProduto Produto)
        {
            DataTable DtResultado = new DataTable("product");

            using (var connection = GetConnection())
            {
                try
                {
                    connection.Open();
                    command.Connection  = connection;
                    command.CommandText = "PesquisaProduto";
                    command.CommandType = CommandType.StoredProcedure;

                    SqlParameter parPesquisaProduto = new SqlParameter();
                    parPesquisaProduto.ParameterName = "@search_text";
                    parPesquisaProduto.SqlDbType     = SqlDbType.VarChar;
                    parPesquisaProduto.Size          = 50;
                    parPesquisaProduto.Value         = Produto.TxtPesquisa;
                    command.Parameters.Add(parPesquisaProduto);

                    SqlDataAdapter SqlDat = new SqlDataAdapter(command);
                    SqlDat.Fill(DtResultado);

                    command.Parameters.Clear();
                }
                catch (Exception ex)
                {
                    DtResultado = null;
                }
                return(DtResultado);
            }
        }
        public DataTable Produto_ListaPorID(DadosProduto PRODUTO)
        {
            DataTable DtResult = new DataTable("produto");

            using (var connection = GetConnection())
            {
                try
                {
                    connection.Open();
                    command.Connection  = connection;
                    command.CommandText = "SELECT p.id_produto, p.codigo, p.ean, c.nome_categoria, p.descricao, p.preco_custo, p.preco, p.preco_promocional, " +
                                          "e.estoque, e.estoque_inicial, p.embalagem, i.tipo_embalagem, i.qtd_embalagem, i.preco_unidade, i.metro_cubico, i.medida " +
                                          "FROM tb_produto p LEFT JOIN tb_produto_info i ON p.id_produto = i.id_produto INNER JOIN tb_categoria c " +
                                          "ON p.id_categoria = c.id_categoria INNER JOIN tb_estoque e ON p.id_produto = e.id_produto WHERE p.id_produto = @id_produto";
                    command.CommandType = CommandType.Text;
                    command.Parameters.AddWithValue("@id_produto", PRODUTO.IdProduto);

                    SqlDataAdapter SqlDat = new SqlDataAdapter(command);
                    SqlDat.Fill(DtResult);
                }
                catch (Exception ex)
                {
                    DtResult = null;
                }
                return(DtResult);
            }
        }
        //inserir regsitro
        public string InsertRegister(DadosProduto Produto)
        {
            string rpta = "";

            using (var connection = GetConnection())
            {
                try
                {
                    connection.Open();
                    command.Connection  = connection;
                    command.CommandText = "CadastroProduto";
                    command.CommandType = CommandType.StoredProcedure;

                    SqlParameter parIdProduto = new SqlParameter();
                    parIdProduto.ParameterName = "@id_produto";
                    parIdProduto.SqlDbType     = SqlDbType.Int;
                    parIdProduto.Value         = Produto.IdProduto;
                    parIdProduto.Direction     = ParameterDirection.Output;
                    command.Parameters.Add(parIdProduto);

                    command.Parameters.AddWithValue("@codigo", Produto.Codigo);
                    command.Parameters.AddWithValue("@ean", Produto.EAN);
                    command.Parameters.AddWithValue("@descricao", Produto.Descricao);
                    command.Parameters.AddWithValue("@preco_custo", Produto.PrecoCusto);
                    command.Parameters.AddWithValue("@preco", Produto.Preco);
                    command.Parameters.AddWithValue("@preco_promocional", Produto.PrecoPromocional);
                    command.Parameters.AddWithValue("@id_categoria", Produto.IdCategoria);
                    command.Parameters.AddWithValue("@imagem", Produto.Imagem);
                    command.Parameters.AddWithValue("@embalagem", Produto.Embalagem);
                    //info extra
                    command.Parameters.AddWithValue("@tipo_embalagem", Produto.TipoEmbalagem);
                    command.Parameters.AddWithValue("@qtd_embalagem", Produto.QtdEmbalagem);
                    command.Parameters.AddWithValue("@preco_unidade", Produto.PrecoUnidade);
                    command.Parameters.AddWithValue("@metro_cubico", Produto.MetroCubico);
                    command.Parameters.AddWithValue("@estoque", Produto.Estoque);
                    command.Parameters.AddWithValue("@medida", Produto.Medida);

                    rpta = command.ExecuteNonQuery() == 3 ? "OK" : "Erro ao inserir o registro (cadastro de produto)";
                }
                catch (Exception ex)
                {
                    rpta = ex.Message;
                }
            }


            return(rpta);
        }
        //Editar o Produto
        public string Editar(DadosProduto Produto)
        {
            string rpta       = "";
            var    connection = GetConnection();

            try
            {
                connection.Open();
                command.Connection  = connection;
                command.CommandText = "UpdateProduto";
                command.CommandType = CommandType.StoredProcedure;

                command.Parameters.AddWithValue("@id_produto", Produto.IdProduto);
                command.Parameters.AddWithValue("@codigo", Produto.Codigo);
                command.Parameters.AddWithValue("@ean", Produto.EAN);
                command.Parameters.AddWithValue("@descricao", Produto.Descricao);
                command.Parameters.AddWithValue("@preco_custo", Produto.PrecoCusto);
                command.Parameters.AddWithValue("@preco", Produto.Preco);
                command.Parameters.AddWithValue("@preco_promocional", Produto.PrecoPromocional);
                command.Parameters.AddWithValue("@id_categoria", Produto.IdCategoria);
                command.Parameters.AddWithValue("@image", Produto.Imagem);
                command.Parameters.AddWithValue("@embalagem", Produto.Embalagem);
                command.Parameters.AddWithValue("@estoque", Produto.Estoque);
                //info extra
                command.Parameters.AddWithValue("@tipo_embalagem", Produto.TipoEmbalagem);
                command.Parameters.AddWithValue("@qtd_embalagem", Produto.QtdEmbalagem);
                command.Parameters.AddWithValue("@preco_unidade", Produto.PrecoUnidade);
                command.Parameters.AddWithValue("@metro_cubico", Produto.MetroCubico);
                command.Parameters.AddWithValue("@medida", Produto.Medida);

                rpta = command.ExecuteNonQuery() == 3 ? "OK" : "Erro ao atualizar o produto";

                command.Parameters.Clear();
            }
            catch (Exception ex)
            {
                rpta = ex.Message;
            }
            finally
            {
                connection.Close();
            }
            return(rpta);
        }
        //cadastro de categoria
        public string CadastroCategoria(DadosProduto Categoria)
        {
            string rpta = "";

            using (var connection = GetConnection())
            {
                connection.Open();
                try
                {
                    command.Connection  = connection;
                    command.CommandText = "INSERT into tb_categoria (nome_categoria) values (@nome_categoria)";
                    command.CommandType = CommandType.Text;
                    command.Parameters.AddWithValue("@nome_categoria", Categoria.NomeCategoria);
                    rpta = command.ExecuteNonQuery() == 1 ? "OK" : "Erro ao cadastrar categoria";
                }
                catch (Exception ex)
                {
                    rpta = ex.Message;
                }
                return(rpta);
            }
        }
 //verificar se ja existe um cadsatro de categoria no banco
 public bool ValidarCategoria(DadosProduto Categoria)
 {
     using (var connection = GetConnection())
     {
         connection.Open();
         try
         {
             command.Connection  = connection;
             command.CommandText = "SELECT * FROM tb_categoria where nome_categoria=@nome_categoria";
             command.CommandType = CommandType.Text;
             command.Parameters.AddWithValue("@nome_categoria", Categoria.NomeCategoria);
             var result = command.ExecuteScalar();
             if (result != null)
             {
                 return(true);
             }
         }
         catch (Exception ex)
         {
         }
         return(false);
     }
 }