Buscar

Aula_11 01 19

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Treinamento em C# WebDeveloper
	
Aula
25
	
	Sexta-feira, 11 de Janeiro de 2019
	
	
	
Geração de Relatórios e publicação de projeto.
	
Consulta de produtos:
@model List<Projeto.Presentation.Models.FuncionarioConsultaModel>
@{
 Layout = null;
}
<!DOCTYPE html>
<html>
<head>
 <meta name="viewport" content="width=device-width" />
 <title>Consulta</title>
 <link href="~/Content/bootstrap.css" rel="stylesheet" />
</head>
<body>
 <div class="container"> 
 <h1>Consulta de Funcionários</h1>
 <a href="/Home/Index" class="btn btn-info btn-sm">
 Voltar para página inicial
 </a>
 <hr />
 <h4>@ViewBag.Resultado</h4>
 <table class="table table-bordered table-hover table-striped">
 <thead> <!-- CABEÇALHO -->
 <tr> <!-- ABRE LINHA -->
 <th>Código</th>
 <th>Nome do Funcionário</th>
 <th>Salário</th>
 <th>Data de Admissão</th>
 <th>Operações</th>
 </tr> <!-- FECHA LINHA -->
 </thead>
 <tbody> <!-- CORPO DA TABELA -->
 @foreach(var funcionario in Model)
 {
 <tr>
 <td>@funcionario.IdFuncionario</td>
 <td>@funcionario.Nome</td>
 <td>@funcionario.Salario.ToString("c")</td>
 <td>@funcionario.DataAdmissao
					.ToString("dddd dd/MM/yyyy")</td>
 <td>
 <a href="/Funcionario/Exclusao
					?idFuncionario=@funcionario.IdFuncionario" 
 onclick="return confirm('Deseja excluir 
					o Funcionario @funcionario.Nome ?');"
 class="btn btn-danger btn-sm">
 Excluir
 </a>
 <a href="/Funcionario/Edicao
					?idFuncionario=@funcionario.IdFuncionario" 
 class="btn btn-primary btn-sm">
 Atualizar
 </a>
 </td>
 </tr>
 }
 </tbody>
 <tfoot> <!-- RODAPE DA TABELA -->
 <tr> <!-- ABRE LINHA --> 
 <td colspan="4">Quantidade de Funcionários: 
				@Model.Count 
			</td>
 <td>
 <a href="/Funcionario/Relatorio" 
 class="btn btn-warning btn-block">
 Gerar Relatório
 </a>
 </td>
 </tr> <!-- FECHA LINHA -->
 </tfoot>
 </table>
 </div>
</body>
</html>
iTextSharp
Framework para geração de relatórios em .NET
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using iTextSharp.text;
using iTextSharp.text.html.simpleparser;
using iTextSharp.text.pdf;
using System.IO;
namespace Projeto.Presentation.Reports
{
 public class RelatorioUtil
 {
 public byte[] GetPdf(string conteudo)
 {
 byte[] pdf = null;
 MemoryStream ms = new MemoryStream();
 TextReader reader = new StringReader(conteudo);
 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();
 return pdf;
 }
 }
}
Voltando ao controller:
FuncionarioController.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Projeto.Repository.Entities; //importando..
using Projeto.Business; //importando..
using Projeto.Presentation.Models; //importando..
using System.Text;
using System.Diagnostics;
using Projeto.Presentation.Reports;
namespace Projeto.Presentation.Controllers
{
 public class FuncionarioController : Controller
 {
 // GET: Funcionario/Cadastro
 public ActionResult Cadastro()
 {
 return View();
 }
 // GET: Funcionario/Consulta
 public ActionResult Consulta()
 {
 List<FuncionarioConsultaModel> lista = ObterFuncionarios();
 //enviando a lista para a página..
 return View(lista);
 } 
 
 // GET: Funcionario/Edicao?idFuncionario={0}
 public ActionResult Edicao(int idFuncionario)
 {
 FuncionarioEdicaoModel model = new FuncionarioEdicaoModel();
 //buscando da camada de negócio..
 FuncionarioBusiness business = new FuncionarioBusiness();
 Funcionario funcionario = business.ConsultarPorId(idFuncionario);
 
 //verificar se o funcionario foi encontrado..
 if(funcionario != null)
 {
 model.IdFuncionario = funcionario.IdFuncionario;
 model.Nome = funcionario.Nome;
 model.Salario = funcionario.Salario;
 model.DataAdmissao = funcionario.DataAdmissao;
 }
 //enviando a model..
 return View(model);
 }
 [HttpPost] //recebe uma requisição POST da página
 public ActionResult CadastrarFuncionario(FuncionarioCadastroModel model)
 {
 //verificar se os dados recebidos atraves da classe model
 //passaram nas regras de validação..
 if(ModelState.IsValid)
 {
 Funcionario funcionario = new Funcionario();
 funcionario.Nome = model.Nome;
 funcionario.Salario = model.Salario;
 funcionario.DataAdmissao = model.DataAdmissao;
 FuncionarioBusiness business = new FuncionarioBusiness();
 string mensagem = business.Cadastrar(funcionario);
 //enviando a mensagem para a página..
 ViewBag.Resultado = mensagem;
 //limpar todos os campos do formulário
 ModelState.Clear();
 }
 //nome da página
 return View("Cadastro");
 }
 //GET : /Funcionario/Exclusao?idFuncionario={0}
 public ActionResult Exclusao(int idFuncionario)
 {
 //acessar a camada de regras de negócio..
 FuncionarioBusiness business = new FuncionarioBusiness();
 string mensagem = business.Excluir(idFuncionario);
 //exibindo a mensagem na página..
 ViewBag.Resultado = mensagem;
 //redirecionar de volta para a página de consulta..
 List<FuncionarioConsultaModel> lista = ObterFuncionarios();
 //retornando para a página..
 return View("Consulta", lista);
 }
 private static List<FuncionarioConsultaModel> ObterFuncionarios()
 {
 //declarando uma lista da classe de modelo..
 List<FuncionarioConsultaModel> lista 
			= new List<FuncionarioConsultaModel>();
 //buscando os dados da camada de negócio..
 FuncionarioBusiness business = new FuncionarioBusiness();
 foreach (Funcionario funcionario in business.Consultar())
 {
 FuncionarioConsultaModel model = new FuncionarioConsultaModel();
 model.IdFuncionario = funcionario.IdFuncionario;
 model.Nome = funcionario.Nome;
 model.Salario = funcionario.Salario;
 model.DataAdmissao = funcionario.DataAdmissao;
 lista.Add(model); //adicionando na lista..
 }
 return lista;
 }
 //método para gerar o relatório
 public void Relatorio()
 {
 //realizando uma consultade funcionários..
 FuncionarioBusiness business = new FuncionarioBusiness();
 List<Funcionario> lista = business.Consultar();
 StringBuilder texto = new StringBuilder();
 texto.Append("<h1>Relatório de Funcionários</h1>");
 texto.Append("<p>Gerado em: " + DateTime.Now + "</p>");
 texto.Append("<br/>");
 texto.Append("<br/>");
 texto.Append("<p>Listagem de funcionários 
					cadastrados no sistema:</p>");
 texto.Append("<br/>");
 texto.Append("<br/>");
 texto.Append("<table border='1' style='width: 100%'>");
 texto.Append("<tr>");
 texto.Append("<th>Código</th>");
 texto.Append("<th>Nome do Funcionário</th>");
 texto.Append("<th>Salário</th>");
 texto.Append("<th>Data de Admissão</th>");
 texto.Append("</tr>");
 foreach(Funcionario f in lista)
 {
 texto.Append("<tr>");
 texto.Append("<td>" + f.IdFuncionario + "</td>");
 texto.Append("<td>" + f.Nome + "</td>");
 texto.Append("<td>" + f.Salario + "</td>");
 texto.Append("<td>" + f.DataAdmissao
						.ToString("dd/MM/yyyy") + "</td>");
 texto.Append("</tr>");
 }
 texto.Append("</table>");
 //transformar o conteudo html em pdf..
 byte[] pdf = null;
 try
 {
 RelatorioUtil util = new RelatorioUtil();
 pdf = util.GetPdf(texto.ToString());
 }
 catch(Exception e)
 {
 Debug.WriteLine("Erro ao gerar pdf: " + e.Message);
 }
 //download do relatório em 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();
 }
 }
}
Executando:
Resultado obtido:
myasp.net
Hospedando sistemas
Criando um banco de dados no servidor myasp.net
Obtendo a connectionstring:
\Web.config.xml
<!-- Mapeamento da string de conexão -->
 <connectionStrings>
 <add
 name="aula08"
 connectionString="Data Source=SQL5006.site4now.net;
		Initial Catalog=DB_A4301C_banco;
		User Id=DB_A4301C_banco_admin;Password=admin123456;"
 />
 </connectionStrings>
Gerenciando o banco de dados:
Executando comandos SQL:
Tools / Run Query
Informações do servidor FTP
Publicando:
13

Outros materiais