Subversion Repositories Integrator Subversion

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

package br.com.ec.controller.managedbean;

import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.Serializable;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.imageio.ImageIO;
import javax.inject.Inject;
import javax.inject.Named;

import org.primefaces.model.DefaultStreamedContent;
import org.primefaces.model.StreamedContent;

import br.com.ec.domain.dto.FiltroComprovanteAvaria;
import br.com.ec.domain.dto.FiltroComprovanteCupom;
import br.com.ec.domain.dto.FiltroComprovanteRegistroPonto;
import br.com.ec.domain.dto.FiltroComprovanteReserva;
import br.com.ec.domain.dto.FiltroComprovanteReservaPedido;
import br.com.ec.domain.dto.FiltroComprovanteTransferencia;
import br.com.ec.domain.dto.FiltroComprovanteTroca;
import br.com.ec.domain.dto.PedidoDTO;
import br.com.ec.domain.dto.ReservaProdutoDTO;
import br.com.ec.domain.model.Cupom;
import br.com.ec.domain.model.EstoqueAuditoria;
import br.com.ec.domain.model.Ponto;
import br.com.ec.domain.model.Transferencia;
import br.com.ec.domain.service.emissorrelatorio.EmissorRelatorioService;
import br.edu.cesmac.core.exception.NegocioException;
import br.edu.cesmac.core.util.VerificadorUtil;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperPrintManager;

@Named
@ManagedBean
@RequestScoped
public class ComprovanteBean implements Serializable {

//      private static final String SEM_FOTO_JPG = "sem_foto.jpg";

        private static final long serialVersionUID = 1L;
       
        private EstoqueAuditoria estoqueAuditoria;
        private ReservaProdutoDTO reservaProduto;
        private PedidoDTO pedido;
        private Cupom cupom;
        private Transferencia transferencia;
        private Ponto ponto;
       
        private Boolean emitirComprovante = false;
        private StreamedContent comprovanteAvariaGerado;
        private StreamedContent comprovanteTrocaGerado;
        private StreamedContent comprovanteReservaGerado;
        private StreamedContent comprovanteReservaPedidoGerado;
        private StreamedContent comprovanteCupomGerado;
        private StreamedContent comprovanteTransferenciaGerado;
        private StreamedContent comprovanteRegistroPontoGerado;
       
        private EmissorRelatorioService emissorRelatorioService;
       
        @Inject
        public ComprovanteBean(EmissorRelatorioService emissorRelatorioService) {
                this.emissorRelatorioService = emissorRelatorioService;
        }

        public EstoqueAuditoria getEstoqueAuditoria() {
                return estoqueAuditoria;
        }
        public void setEstoqueAuditoria(EstoqueAuditoria estoqueAuditoria) {
                this.estoqueAuditoria = estoqueAuditoria;
        }
        public Long getSequencialEstoqueAuditoria() {
                return VerificadorUtil.naoEstaNulo(getEstoqueAuditoria())? getEstoqueAuditoria().getSequencial() : null;
        }
       
        public ReservaProdutoDTO getReservaProduto() {
                return reservaProduto;
        }
        public void setReservaProduto(ReservaProdutoDTO reservaProduto) {
                this.reservaProduto = reservaProduto;
        }
       
        public PedidoDTO getPedido() {
                return pedido;
        }
        public void setPedido(PedidoDTO pedido) {
                this.pedido = pedido;
        }
        public Long getSequencialPedido() {
                return VerificadorUtil.naoEstaNulo(getPedido())? getPedido().getSequencial() : null;
        }
       
        public Cupom getCupom() {
                return cupom;
        }
        public void setCupom(Cupom cupom) {
                this.cupom = cupom;
        }
        public Long getSequencialCupom() {
                return VerificadorUtil.naoEstaNulo(getCupom())? getCupom().getSequencial() : null;
        }
       
        public Transferencia getTransferencia() {
                return transferencia;
        }
        public void setTransferencia(Transferencia transferencia) {
                this.transferencia = transferencia;
        }
        public Long getSequencialTransferencia() {
                return VerificadorUtil.naoEstaNulo(getTransferencia())? getTransferencia().getSequencial() : null;
        }
       
        public Ponto getPonto() {
                return ponto;
        }
        public void setPonto(Ponto ponto) {
                this.ponto = ponto;
        }
       
        /****************************************************/
       
        public Boolean getEmitirComprovante() {
                return emitirComprovante;
        }
        public void setEmitirComprovante(Boolean emitirComprovante) {
                this.emitirComprovante = emitirComprovante;
        }
       
        public StreamedContent getComprovanteAvariaGerado() {
                if (getEmitirComprovante()) {
                        JasperPrint relatorio = emissorRelatorioService.emitirComprovante(new FiltroComprovanteAvaria(estoqueAuditoria));
                        setComprovanteAvariaGerado(gerarComprovante(relatorio));
                        setEmitirComprovante(false);
                        return comprovanteAvariaGerado;
                }
                return comprovanteAvariaGerado;
        }
        public void setComprovanteAvariaGerado(StreamedContent comprovanteAvariaGerado) {
                this.comprovanteAvariaGerado = comprovanteAvariaGerado;
        }
       
        public StreamedContent getComprovanteTrocaGerado() {
                try {
                        if (getEmitirComprovante()) {
                                JasperPrint relatorio = emissorRelatorioService.emitirComprovante(new FiltroComprovanteTroca(estoqueAuditoria));
                                setComprovanteTrocaGerado(gerarComprovante(relatorio));
                                return comprovanteTrocaGerado;
                        }
                } finally {
                        setEmitirComprovante(false);
                }
                return comprovanteTrocaGerado;
        }
        public void setComprovanteTrocaGerado(StreamedContent comprovanteTrocaGerado) {
                this.comprovanteTrocaGerado = comprovanteTrocaGerado;
        }
       
        public StreamedContent getComprovanteReservaGerado() {
                try {
                        if (getEmitirComprovante()) {
                                JasperPrint relatorio = emissorRelatorioService.emitirComprovante(new FiltroComprovanteReserva(reservaProduto));
                                setComprovanteReservaGerado(gerarComprovante(relatorio));
                                return comprovanteReservaGerado;
                        }
                } finally {
                        setEmitirComprovante(false);
                }
                return comprovanteReservaGerado;
        }
        public void setComprovanteReservaGerado(StreamedContent comprovanteReservaGerado) {
                this.comprovanteReservaGerado = comprovanteReservaGerado;
        }
       
        public StreamedContent getComprovanteCupomGerado() {
                try {
                        if (getEmitirComprovante()) {
                                JasperPrint relatorio = emissorRelatorioService.emitirComprovante(new FiltroComprovanteCupom(cupom));
                                setComprovanteCupomGerado(gerarComprovante(relatorio));
                                return comprovanteCupomGerado;
                        }
                } finally {
                        setEmitirComprovante(false);
                }
                return comprovanteCupomGerado;
        }
        public void setComprovanteCupomGerado(StreamedContent comprovanteCupomGerado) {
                this.comprovanteCupomGerado = comprovanteCupomGerado;
        }
       
        public StreamedContent getComprovanteReservaPedidoGerado() {
                try {
                        if (getEmitirComprovante()) {
                                JasperPrint relatorio = emissorRelatorioService.emitirComprovante(new FiltroComprovanteReservaPedido(pedido));
                                setComprovanteReservaPedidoGerado(gerarComprovante(relatorio));
                                return comprovanteReservaPedidoGerado;
                        }
                } finally {
                        setEmitirComprovante(false);
                }
                return comprovanteReservaPedidoGerado;
        }
        public void setComprovanteReservaPedidoGerado(StreamedContent comprovanteReservaPedidoGerado) {
                this.comprovanteReservaPedidoGerado = comprovanteReservaPedidoGerado;
        }
       
        public StreamedContent getComprovanteTransferenciaGerado() {
                try {
                        if (getEmitirComprovante()) {
                                JasperPrint relatorio = emissorRelatorioService.emitirComprovante(new FiltroComprovanteTransferencia(transferencia));
                                setComprovanteTransferenciaGerado(gerarComprovante(relatorio));
                        }
                } catch (Exception e) {
                        e.printStackTrace();
                } finally {
                        setEmitirComprovante(false);
                }
                return comprovanteTransferenciaGerado;
        }
        public void setComprovanteTransferenciaGerado(StreamedContent comprovanteTransferenciaGerado) {
                this.comprovanteTransferenciaGerado = comprovanteTransferenciaGerado;
        }
       
        public StreamedContent getComprovanteRegistroPontoGerado() {
                try {
                        if (getEmitirComprovante()) {
                                JasperPrint relatorio = emissorRelatorioService.emitirComprovante(new FiltroComprovanteRegistroPonto(ponto));
                                setComprovanteRegistroPontoGerado(gerarComprovante(relatorio));
                        }
                } catch (Exception e) {
                        e.printStackTrace();
                } finally {
                        setEmitirComprovante(false);
                }
                return comprovanteRegistroPontoGerado;
        }
        public void setComprovanteRegistroPontoGerado(StreamedContent comprovanteRegistroPontoGerado) {
                this.comprovanteRegistroPontoGerado = comprovanteRegistroPontoGerado;
        }
       
        /*************************************/
       
        public void prepararGerarComprovante(PedidoDTO pedido) {
                setEmitirComprovante(true);
                setPedido(pedido);
        }
       
        public void prepararGerarComprovante(EstoqueAuditoria estoqueAuditoria) {
                setEmitirComprovante(true);
                setEstoqueAuditoria(estoqueAuditoria);
        }
       
        public void prepararGerarComprovante(ReservaProdutoDTO reservaProduto) {
                setEmitirComprovante(true);
                setReservaProduto(reservaProduto);
        }
       
        public void prepararGerarComprovante(Cupom cupom) {
                setEmitirComprovante(true);
                setCupom(cupom);
        }
       
        public void prepararGerarComprovante(Transferencia transferencia) {
                setEmitirComprovante(true);
                setTransferencia(transferencia);
        }
       
        public StreamedContent gerarComprovante(JasperPrint relatorio) {
                setEmitirComprovante(false);
                return (StreamedContent) new DefaultStreamedContent(new ByteArrayInputStream(retornarByterRelatorio(relatorio)), "image/png", "comprovante.png");
        }
       
        private byte[] retornarByterRelatorio(final JasperPrint relatorio) {
                byte[] imageBytes = null;
                try {
                        BufferedImage bufferedImage = (BufferedImage) JasperPrintManager.printPageToImage(relatorio, 0, 2.0f);
                        ByteArrayOutputStream baos = new ByteArrayOutputStream();
                ImageIO.write(bufferedImage,"png", baos);
                imageBytes = baos.toByteArray();
                } catch (Exception e) {
                        e.printStackTrace();
                        throw new NegocioException(e.getMessage());
                }
                return imageBytes;
        }
       
}