protected void gridProduto_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            try
            {
                int index = gridProduto.EditIndex;
                GridViewRow row = gridProduto.Rows[index];

                Produto p = new Produto();
                p.IdProduto = Convert.ToInt32(gridProduto.DataKeys[e.RowIndex].Value.ToString());
                p.Nome = Convert.ToString(((TextBox)(row.Cells[2].Controls[0])).Text);
                p.Preco = Convert.ToDecimal(((TextBox)(row.Cells[3].Controls[0])).Text);
                p.Quantidade = Convert.ToInt32(((TextBox)(row.Cells[4].Controls[0])).Text);
                p.Descricao = Convert.ToString(((TextBox)(row.Cells[5].Controls[0])).Text);

                ProdutoDal d = new ProdutoDal();
                d.Update(p);

                lblMensagem.Text = "Produto Atualizado.";

                gridProduto.EditIndex = -1;
                gridBind();

                
            }
            catch (Exception ex)
            {
                
                lblMensagem.Text = "Erro ao atualizar Produto" + ex.Message;
            }
        }
        protected void btnCadastro_Click(object sender, EventArgs e)
        {
            try
            {

                Produto p = new Produto();

                p.IdFornecedor = Convert.ToInt32(DropDownFornecedor.SelectedValue);
                p.Nome = txtNome.Text;
                p.Preco = Convert.ToDecimal(txtPreco.Text);
                p.Quantidade = Convert.ToInt32(txtQuantidade.Text);
                p.Descricao = txtDescricao.Text;


                ProdutoDal d = new ProdutoDal();
                d.Insert(p);

                lblMensagem.Text = "Produto " + p.Nome + ", cadastrado com sucesso";

                txtNome.Text = string.Empty;
                txtPreco.Text = string.Empty;
                txtQuantidade.Text = string.Empty;
                txtDescricao.Text = string.Empty;
                DropDownFornecedor.SelectedIndex = 0;
            }
            catch (Exception ex)
            {

                lblMensagem.Text = ex.Message;
            }

        }
        protected void gridProdutos_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            try
            {
                ProdutoDal d = new ProdutoDal();
                d.Delete(Convert.ToInt32(gridProduto.DataKeys[e.RowIndex].Value.ToString()));

                lblMensagem.Text = "Produto Excluido.";

                gridBind();
            }
            catch (Exception ex)
            {

                lblMensagem.Text = "Erro ao deletar Produto." + ex.Message;
            }
        }
        public JsonResult Cadastrar(ProdutoModelCadastro model)
        {
            try
            {
                Funcionario u = (Funcionario)Session["funcionariologado"];

                Produto p = new Produto();

                p.Nome = model.Nome;
                p.Preco = model.Preco;
                p.Quantidade = model.Quantidade;
                p.Descricao = model.Descricao;
                p.IdFornecedor = model.IdFornecedor;

                ProdutoDal d = new ProdutoDal();
                d.Insert(p);

                return Json("Dados gravados com sucesso.");
            }
            catch (Exception e)
            {
                return Json(e.Message);
            }
        }
 protected void gridBind()
 {
     ProdutoDal d = new ProdutoDal();
     gridProduto.DataSource = d.FindAll();
     gridProduto.DataBind();
 }
        public JsonResult Consultar(ProdutoModelConsulta model)
        {
            try
            {
                Funcionario u = (Funcionario)Session["funcionariologado"];

                ProdutoDal d = new ProdutoDal();

                List<Produto> list = new List<Produto>();
                list.Add(d.FindById(model.IdProduto));

                return Json(list);

            }
            catch (Exception e)
            {
                return Json(e.Message);
            }
        }
        public JsonResult Editar(ProdutoModelEdicao model)
        {
            try
            {
                Funcionario u = (Funcionario)Session["funcionariologado"];

                Produto p = new Produto();

                p.IdProduto = model.IdProduto;
                p.Nome = model.Nome;
                p.Preco = model.Preco;
                p.Quantidade = model.Quantidade;
                p.Descricao = model.Descricao;
                p.IdFornecedor = model.IdFornecedor;

                ProdutoDal d = new ProdutoDal();

                d.Update(p);

                return Json("Produto atualizado.");
            }
            catch (Exception e)
            {
                return Json(e.Message);
            }
        }
        public JsonResult Excluir(ProdutoModelExclusao model)
        {
            try
            {
                Funcionario u = (Funcionario)Session["funcionariologado"];

                ProdutoDal d = new ProdutoDal();

                d.Delete(model.IdProduto);

                return Json("Produto Excluído.");
            }
            catch (Exception e)
            {
                return Json(e.Message);
            }
        }
        public JsonResult Listar()
        {
            try
            {
                Funcionario u = (Funcionario)Session["funcionariologado"];

                ProdutoDal d = new ProdutoDal();

                List<Produto> list = new List<Produto>();
                list = d.FindAll();

                return Json(list);
            }
            catch (Exception e)
            {
                return Json(e.Message);
            }
        }