A maior rede de estudos do Brasil

Grátis
14 pág.
Aula_11 01 19

Pré-visualização | Página 1 de 2

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 consulta