Subversion Repositories Integrator Subversion

Rev

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

package br.com.ec.controller.managedbean;

import java.io.Serializable;
import java.util.List;

import javax.inject.Inject;
import javax.inject.Named;

import org.springframework.context.annotation.Scope;

import br.com.ec.controller.managedbean.consultademanda.CupomConsultaPorDemanda;
import br.com.ec.core.consulta.ParametrosConsulta;
import br.com.ec.core.exception.NegocioException;
import br.com.ec.core.generic.GenericService;
import br.com.ec.core.util.DataUtils;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.domain.model.Cliente;
import br.com.ec.domain.model.Cupom;
import br.com.ec.domain.model.tipos.TipoCupom;
import br.com.ec.domain.service.cliente.ClienteService;
import br.com.ec.domain.service.cupom.CupomService;
import br.com.ec.web.exception.VerificadorLancamentoException;
import br.com.ec.web.exception.VerificadorLancamentoException.CommandBean;
import br.com.ec.web.generic.AbstractBean;
import br.com.ec.web.message.LancadorMensagem;

@Named
@Scope("view")
public class CupomBean extends AbstractBean<Cupom> implements Serializable {

        private static final long serialVersionUID = 1L;
       
        private CupomService cupomService;
        private ClienteService clienteService;
       
        private Cupom cupomSelecionado;
        private String cpfCliente;
        private Double valorSeparacao;
        private String codigoCupomParaUnir;
        private String codigoCupomParaUnirSegundo;
        private Cupom cupomSelecionadoParaUnir;
       
        private CupomConsultaPorDemanda lazy;
        private CupomConsultaPorDemanda lazyValidos;
       
        @Inject
        public CupomBean(CupomService cupomService, CupomConsultaPorDemanda lazy, CupomConsultaPorDemanda lazyValidos, ClienteService clienteService) {
                this.cupomService = cupomService;
                this.lazy = lazy;
                this.lazyValidos = lazyValidos;
                this.clienteService = clienteService;
        }
       
        @Override
        public void preCarregamento() {
                entidade = new Cupom();
                parametrosConsulta = new ParametrosConsulta<Cupom>();
                parametrosConsulta.setEntidade(entidade);
        }
       
        @Override
        public void limparEntidade() {
                setEntidade(new Cupom());
                setCupomSelecionado(null);
                setCodigoCupomParaUnir("");
                setCodigoCupomParaUnirSegundo("");
        }

        @Override
        public GenericService<Cupom> getService() {
                return cupomService;
        }
       
        @Override
        public Cupom getEntidade() {
                return entidade;
        }

        @Override
        public Cupom getId() {
                return getEntidade();
        }
       
        public Cupom getCupomSelecionado() {
                return cupomSelecionado;
        }
        public void setCupomSelecionado(Cupom cupomSelecionado) {
                this.cupomSelecionado = cupomSelecionado;
        }
       
        public Cupom getCupomSelecionadoParaUnir() {
                return cupomSelecionadoParaUnir;
        }
        public void setCupomSelecionadoParaUnir(Cupom cupomSelecionadoParaUnir) {
                this.cupomSelecionadoParaUnir = cupomSelecionadoParaUnir;
        }
       
        public CupomConsultaPorDemanda getLazy() {
                prepararConsultaDemanda();
                return lazy;
        }
        public void setLazy(CupomConsultaPorDemanda lazy) {
                this.lazy = lazy;
        }
        public void prepararConsultaDemanda() {
                lazy.setarParametrosConsulta(getParametrosConsulta());
        }
       
        public CupomConsultaPorDemanda getLazyValidos() {
                prepararConsultaDemandaValidos();
                return lazyValidos;
        }
        public void setLazyValidos(CupomConsultaPorDemanda lazyValidos) {
                this.lazyValidos = lazyValidos;
        }
        public void prepararConsultaDemandaValidos() {
                ParametrosConsulta<Cupom> parametros = getParametrosConsulta();
                Cupom cupom = new Cupom();
                cupom.setDataHoraValidade(DataUtils.getDataAtual());
                cupom.setAtivo(true);
                cupom.setPublico(true);
                parametros.setEntidade(cupom);
                lazyValidos.setarParametrosConsulta(parametros);
        }
       
        public String getCpfCliente() {
                return VerificadorUtil.naoEstaNulo(cpfCliente)? cpfCliente.replace(".", "").replace("-", "") : cpfCliente;
        }
        public void setCpfCliente(String cpfCliente) {
                this.cpfCliente = cpfCliente;
        }
       
        public Double getValorSeparacao() {
                return valorSeparacao;
        }
        public void setValorSeparacao(Double valorSeparacao) {
                this.valorSeparacao = valorSeparacao;
        }
       
        public String getCodigoCupomParaUnir() {
                return codigoCupomParaUnir;
        }
        public void setCodigoCupomParaUnir(String codigoCupomParaUnir) {
                this.codigoCupomParaUnir = codigoCupomParaUnir;
        }
       
        public String getCodigoCupomParaUnirSegundo() {
                return codigoCupomParaUnirSegundo;
        }
        public void setCodigoCupomParaUnirSegundo(String codigoCupomParaUnirSegundo) {
                this.codigoCupomParaUnirSegundo = codigoCupomParaUnirSegundo;
        }
       
        public TipoCupom[] getTiposCupom() {
                return TipoCupom.values();
        }
       
        /***************************************************************/
       
        public List<Cupom> getConsultarTodas() {
                return cupomService.consultarTodos(new Cupom());
        }
       
        public void prepararParaGerarCupom() {
                Cupom cupomGerado = new Cupom();
                cupomGerado.setCodigo(cupomService.gerarCodigoValido());
                cupomGerado.setDataHoraEmissao(DataUtils.getDataAtual());
                cupomGerado.setPublico(true);
                cupomGerado.setAtivo(true);
                cupomGerado.setLimiteUtilizacao(false);
                cupomGerado.setTipoCupom(TipoCupom.PROMOCIONAL.getValor());
                setCupomSelecionado(cupomGerado);
        }
       
        public void cadastrarCupomGerado() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                cupomService.cadastrar(getCupomSelecionado());
                                LancadorMensagem.lancarSucesso("CUPOM GERADO COM SUCESSO! CÓDIGO GERADO: " + getCupomSelecionado().getCodigo());
                                setCupomSelecionado(null);
                        }
                });
        }
       
        public void alterarCupomGerado() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                cupomService.alterar(getCupomSelecionado());
                                LancadorMensagem.lancarSucesso("CUPOM ALTERADO COM SUCESSO!");
                                setCupomSelecionado(null);
                        }
                });
        }
       
        public void selecionarCliente(final Cliente cliente) {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                getCupomSelecionado().setCliente(clienteService.consultarClientePorCpfCnpj(cliente.getCpfCnpj()));
                                setCpfCliente(null);
                                adicionandoParametroArgsConfirmandoAcao(true);
                        }
                });
        }
       
        public void retirarCliente() {
                getCupomSelecionado().setCliente(null);
        }
       
        public void excluirCupom(final Cupom cupom) {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                cupomService.excluirCupom(cupom);
                                adicionandoParametroArgsConfirmandoAcao(true);
                                LancadorMensagem.lancarSucesso("CUPOM EXCLUÍDO COM SUCESSO");
                        }
                });
        }
       
        public void prepararParaSepararCupom() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                setCupomSelecionado(cupomService.consultarCupomPorCodigo(getEntidade().getCodigo()));
                                verificarCupomValidoEhParaReembolso(getCupomSelecionado());
                                setValorSeparacao(new Double(0.0));
                                adicionandoParametroArgsConfirmandoAcao(true);
                        }
                });
        }
       
        public void confirmarSeparacaoCupom() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                Cupom cupomNovo = cupomService.separarCupom(getCupomSelecionado(), getValorSeparacao());
                                adicionandoParametroArgsConfirmandoAcao(true);
                                limparEntidade();
                                LancadorMensagem.lancarSucesso("CUPOM GERADO COM SUCESSO! CÓDIGO: " + cupomNovo.getCodigo());
                        }
                });
        }
       
        public void prepararParaUnirCupons() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                setCupomSelecionado(cupomService.consultarCupomPorCodigo(getCodigoCupomParaUnir()));
                                verificarCupomValidoEhParaReembolso(getCupomSelecionado());
                                setCupomSelecionadoParaUnir(cupomService.consultarCupomPorCodigo(getCodigoCupomParaUnirSegundo()));
                                verificarCupomValidoEhParaReembolso(getCupomSelecionadoParaUnir());
                                adicionandoParametroArgsConfirmandoAcao(true);
                        }
                });
        }
       
        private void verificarCupomValidoEhParaReembolso(Cupom cupom) {
                if (VerificadorUtil.naoEstaNulo(cupom)) {
                        if (!cupom.getAtivo() || !cupom.valido()) {
                                throw new NegocioException("OPERAÇÃO NÃO PERMITIDA: CUPOM INDISPONÍVEL");
                        }
                        if (!cupom.getTipoCupom().equals(TipoCupom.REEMBOLSO.getValor())) {
                                throw new NegocioException("OPERAÇÃO NÃO PERMITIDA: CUPOM DEVE SER PARA REEMBOLSO");
                        }
                }
        }
       
        public void confirmarUniaoCupons() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                Cupom cupomNovo = cupomService.unirCupons(getCupomSelecionado(), getCupomSelecionadoParaUnir());
                                adicionandoParametroArgsConfirmandoAcao(true);
                                limparEntidade();
                                LancadorMensagem.lancarSucesso("CUPONS UNIDOS COM SUCESSO! CÓDIGO: " + cupomNovo.getCodigo());
                        }
                });
        }
       
}