/*** Copyright (c) 2013 Hércules S. S. José Este arquivo é parte do programa EncontreAquiPeças. EncontreAquiPeças é um software livre; você pode redistribui-lo e/ou modificá-lo dentro dos termos da Licença Pública Geral Menor GNU como publicada pela Fundação do Software Livre (FSF); na versão 2.1 da Licença. Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA GARANTIA; sem uma garantia implícita de ADEQUAÇÂO a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral Menor GNU em português para maiores detalhes. Você deve ter recebido uma cópia da Licença Pública Geral Menor GNU sob o nome de "LICENSE.TXT" junto com este programa, se não, acesse o site HSlife no endereco www.hslife.com.br ou escreva para a Fundação do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. Para mais informações sobre o programa EncontreAquiPeças e seu autor acesse o endereço www.hslife.com.br, pelo e-mail contato@hslife.com.br ou escreva para Hércules S. S. José, Av. Ministro Lafaeyte de Andrade, 1683 - Bl. 3 Apt 404, Marco II - Nova Iguaçu, RJ, Brasil. */ package br.com.hslife.encontreaquipecas.controller; import java.util.ArrayList; import java.util.Calendar; import java.util.List; import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedProperty; import javax.faces.bean.SessionScoped; import javax.faces.context.FacesContext; import javax.faces.model.SelectItem; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import br.com.caelum.stella.boleto.Banco; import br.com.caelum.stella.boleto.Boleto; import br.com.caelum.stella.boleto.Datas; import br.com.caelum.stella.boleto.Emissor; import br.com.caelum.stella.boleto.Sacado; import br.com.caelum.stella.boleto.bancos.BancoDoBrasil; import br.com.caelum.stella.boleto.transformer.GeradorDeBoleto; import br.com.hslife.encontreaquipecas.entity.Consumidor; import br.com.hslife.encontreaquipecas.entity.Endereco; import br.com.hslife.encontreaquipecas.entity.Loja; import br.com.hslife.encontreaquipecas.entity.Telefone; import br.com.hslife.encontreaquipecas.entity.Usuario; import br.com.hslife.encontreaquipecas.enumeration.AreaInteresse; import br.com.hslife.encontreaquipecas.enumeration.TipoTelefone; import br.com.hslife.encontreaquipecas.exception.BusinessException; import br.com.hslife.encontreaquipecas.facade.IUsuario; @ManagedBean(name="efetuarRegistroMB") @SessionScoped public class EfetuarRegistroController extends AbstractController<Usuario>{ /** * */ private static final long serialVersionUID = -4039320765516292024L; @ManagedProperty(name="service", value="#{usuarioService}") private IUsuario service; private Loja loja; private Consumidor consumidor; private Usuario usuario; private Endereco endereco; private Telefone telefone; private String perfilUsuario; public EfetuarRegistroController() { super(new Usuario()); } @Override protected void initializeEntity() { loja = new Loja(); consumidor = new Consumidor(); endereco = new Endereco(); telefone = new Telefone(); usuario = new Usuario(); perfilUsuario = null; } public String efetuarRegistroPasso1() { initializeEntity(); return "efetuarRegistroPasso1"; } public String efetuarRegistroPasso2() { if (perfilUsuario.equals("LOJA")) { loja = new Loja(); endereco = new Endereco(); telefone = new Telefone(); usuario = new Usuario(); } else if (perfilUsuario.equals("CONSUMIDOR")) { consumidor = new Consumidor(); endereco = new Endereco(); telefone = new Telefone(); usuario = new Usuario(); } else { errorMessage("Op��o inv�lida!"); return ""; } return "efetuarRegistroPasso2"; } public String retornarEfetuarRegistroPasso2() { return "efetuarRegistroPasso2"; } public String efetuarRegistroPasso3() { try { telefone.validate(); endereco.validate(); if (perfilUsuario.equals("LOJA")) { loja.setEndereco(endereco); loja.getTelefones().add(telefone); loja.setUsuario(usuario); loja.validate(); return "efetuarRegistroPasso3"; } else if (perfilUsuario.equals("CONSUMIDOR")) { consumidor.setEndereco(endereco); consumidor.getTelefones().add(telefone); consumidor.setUsuario(usuario); consumidor.validate(); return "efetuarRegistroPasso3"; } else { errorMessage("Op��o inv�lida!"); } } catch (BusinessException be) { errorMessage(be.getMessage()); } return ""; } public String efetuarRegistroPasso4() { try { if (perfilUsuario.equals("LOJA")) { getService().efetuarRegistro(loja); } else if (perfilUsuario.equals("CONSUMIDOR")) { getService().efetuarRegistro(consumidor); } else { errorMessage("Op��o inv�lida!"); } return "efetuarRegistroPasso4"; } catch (BusinessException be) { errorMessage(be.getMessage()); } return ""; } public String efetuarRegistroPasso5() { return "efetuarRegistroPasso5"; } public String finalizarRegistro() { return "login"; } public void gerarBoleto() { Calendar dataAtual = Calendar.getInstance(); Datas datas = Datas.novasDatas() .comDocumento(dataAtual.get(Calendar.DAY_OF_MONTH), dataAtual.get(Calendar.MONTH), dataAtual.get(Calendar.YEAR)) .comProcessamento(dataAtual.get(Calendar.DAY_OF_MONTH), dataAtual.get(Calendar.MONTH), dataAtual.get(Calendar.YEAR)) .comVencimento(dataAtual.get(Calendar.DAY_OF_MONTH), dataAtual.get(Calendar.MONTH), dataAtual.get(Calendar.YEAR)); Emissor emissor = Emissor.novoEmissor() .comCedente("EncontreAquiPe�as") .comAgencia(1824).comDigitoAgencia('4') .comContaCorrente(76000) .comNumeroConvenio(1207113) .comDigitoContaCorrente('5') .comCarteira(18) .comNossoNumero(9000206); Sacado sacado = Sacado.novoSacado() .comNome(usuario.getNome()) .comCpf(loja.getCnpj()) .comEndereco(endereco.getLabel()); Banco banco = new BancoDoBrasil(); // Setar o valor do boleto de acordo com o tipo de serviço double valorBoleto = 0.0; if (loja.getAreaInteresse().equals(AreaInteresse.BANNER)) { valorBoleto = 50; } else { valorBoleto = 150; } Boleto boleto = Boleto.novoBoleto() .comBanco(banco) .comDatas(datas) .comDescricoes() .comEmissor(emissor) .comSacado(sacado) .comValorBoleto(valorBoleto) .comNumeroDoDocumento("1234") .comInstrucoes("Pagamento do servi�o prestado") .comLocaisDePagamento("EncontreAquiPe�as"); GeradorDeBoleto gerador = new GeradorDeBoleto(boleto); // Para gerar um boleto em PDF gerador.geraPDF("BancoDoBrasil.pdf"); // Para gerar um boleto em PNG gerador.geraPNG("BancoDoBrasil.png"); // Para gerar um array de bytes a partir de um PDF byte[] bPDF = gerador.geraPDF(); // Para gerar um array de bytes a partir de um PNG // byte[] bPNG = gerador.geraPNG(); HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse(); try { response.setContentType("application/pdf"); response.setHeader("Content-Disposition","attachment; filename=boleto.pdf"); response.setContentLength(bPDF.length); ServletOutputStream output = response.getOutputStream(); output.write(bPDF, 0, bPDF.length); FacesContext.getCurrentInstance().responseComplete(); } catch (Exception e) { errorMessage(e.getMessage()); } } public List<SelectItem> getListaAreaInteresse() { List<SelectItem> listaSelectItem = new ArrayList<SelectItem>(); listaSelectItem.add(new SelectItem(AreaInteresse.BANNER, "Banner")); listaSelectItem.add(new SelectItem(AreaInteresse.PRODUTO, "Divulga��o de produto")); return listaSelectItem; } public List<SelectItem> getListaTipoTelefone() { List<SelectItem> listaSelectItem = new ArrayList<SelectItem>(); listaSelectItem.add(new SelectItem(TipoTelefone.RESIDENCIAL, "Residencial")); listaSelectItem.add(new SelectItem(TipoTelefone.COMERCIAL, "Comercial")); listaSelectItem.add(new SelectItem(TipoTelefone.FAX, "Fax")); listaSelectItem.add(new SelectItem(TipoTelefone.OUTROS, "Outros")); return listaSelectItem; } public IUsuario getService() { return service; } public void setService(IUsuario service) { this.service = service; } public Loja getLoja() { return loja; } public void setLoja(Loja loja) { this.loja = loja; } public Consumidor getConsumidor() { return consumidor; } public void setConsumidor(Consumidor consumidor) { this.consumidor = consumidor; } public String getPerfilUsuario() { return perfilUsuario; } public void setPerfilUsuario(String perfilUsuario) { this.perfilUsuario = perfilUsuario; } public Endereco getEndereco() { return endereco; } public void setEndereco(Endereco endereco) { this.endereco = endereco; } public Telefone getTelefone() { return telefone; } public void setTelefone(Telefone telefone) { this.telefone = telefone; } public Usuario getUsuario() { return usuario; } public void setUsuario(Usuario usuario) { this.usuario = usuario; } }