//método para retornar a consulta de produtos para o jquery
        public JsonResult ConsultarProdutos()
        {
            try
            {
                List <ProdutoConsultaViewModel> lista = new List <ProdutoConsultaViewModel>();

                //executar a consulta de produtos na camada de regras de negócio
                ProdutoBusiness business = new ProdutoBusiness();
                foreach (Produto produto in business.ConsultarTodos())
                {
                    ProdutoConsultaViewModel model = new ProdutoConsultaViewModel();
                    model.IdProduto  = produto.IdProduto;
                    model.Nome       = produto.Nome;
                    model.Preco      = produto.Preco;
                    model.Quantidade = produto.Quantidade;
                    model.Total      = produto.Preco * produto.Quantidade;

                    lista.Add(model); //adicionar na lista
                }

                return(Json(lista)); //retornando a lista
            }
            catch (Exception e)
            {
                Response.StatusCode = 500; //INTERNAL SERVER ERROR

                //retornando mensagem de erro..
                return(Json(e.Message));
            }
        }
        //evento executado no campo dropdownlist
        protected void ddlEstoque_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                //verificar se o campo dropdownlist não esta vazio..
                if (!string.IsNullOrEmpty(ddlEstoque.SelectedValue))
                {
                    //resgatar o id do estoque selecionado..
                    int idEstoque = int.Parse(ddlEstoque.SelectedValue);

                    ProdutoBusiness business = new ProdutoBusiness();
                    List <Produto>  lista    = business.ConsultarTodos(idEstoque);

                    lblmensagem.Text = "Quantidade de produtos neste estoque: " + lista.Count;

                    gridProdutos.DataSource = lista;
                    gridProdutos.DataBind();
                }
                else
                {
                    CarregarProdutos();
                }
            }
            catch (Exception ex)
            {
                lblmensagem.Text = ex.Message;
            }
        }
        //método para realizar o download do relatório em PDF..
        //URL: Produto/Relatorio
        public void Relatorio()
        {
            try
            {
                //PASSO 1) Escrever o conteúdo do relatório em formato HTML
                StringBuilder conteudo = new StringBuilder();

                conteudo.Append("<h2>Relatório de Produtos</h2>");
                conteudo.Append($"Relatório gerado em: {DateTime.Now}");
                conteudo.Append("<br/><br/>");

                conteudo.Append("<table border='1' style='width: 100%'>");

                conteudo.Append("<tr>");
                conteudo.Append("<th>Código</th>");
                conteudo.Append("<th>Nome do Produto</th>");
                conteudo.Append("<th>Preço</th>");
                conteudo.Append("<th>Quantidade</th>");
                conteudo.Append("</tr>");

                //buscar os produtos na base de dados
                ProdutoBusiness business = new ProdutoBusiness();
                List <Produto>  lista    = business.ConsultarTodos();

                //percorrer a lista..
                foreach (Produto produto in lista)
                {
                    conteudo.Append("<tr>");
                    conteudo.Append($"<td>{produto.IdProduto}</td>");
                    conteudo.Append($"<td>{produto.Nome}</td>");
                    conteudo.Append($"<td>{produto.Preco}</td>");
                    conteudo.Append($"<td>{produto.Quantidade}</td>");
                    conteudo.Append("</tr>");
                }

                conteudo.Append("</table>");
                conteudo.Append("<br/>");
                conteudo.Append($"Quantidade de registros: {lista.Count}");

                //PASSO 2) Utilizando o iTextSharp para transformar
                //o conteudo HTML do passo 1 em um arquivo PDF

                byte[] pdf = null;

                MemoryStream ms     = new MemoryStream();
                TextReader   reader = new StringReader(conteudo.ToString());

                Document   doc    = new Document(PageSize.A4, 50, 50, 50, 50);
                PdfWriter  writer = PdfWriter.GetInstance(doc, ms);
                HTMLWorker html   = new HTMLWorker(doc);

                doc.Open();
                html.StartDocument();
                html.Parse(reader);
                html.EndDocument();
                html.Close();
                doc.Close();

                pdf = ms.ToArray();

                //PASSO 3) Utilizar o MVC para fazer o download do PDF
                Response.Clear();
                Response.ContentType = "application/pdf";
                Response.AddHeader("content-disposition", "attachment; filename=relatorio.pdf");
                Response.Cache.SetCacheability(HttpCacheability.NoCache);
                Response.BinaryWrite(pdf);
                Response.End();
            }
            catch (Exception e)
            {
                Debug.WriteLine(e.Message);
            }
        }