Subversion Repositories Integrator Subversion

Rev

Rev 106 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

package br.com.ec.controller.managedbean;

import java.io.Serializable;

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

import org.springframework.context.annotation.Scope;

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.Loja;
import br.com.ec.domain.model.Pedido;
import br.com.ec.domain.model.Produto;
import br.com.ec.domain.service.cliente.ClienteService;
import br.com.ec.domain.service.loja.LojaService;
import br.com.ec.domain.service.pedido.PedidoService;
import br.com.ec.domain.service.produto.ProdutoService;
import br.com.ec.domain.shared.ConstantesSEC;
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 InformarPedidoBean extends AbstractBean<Pedido> implements Serializable {

        private static final long serialVersionUID = 1L;
       
        private Loja lojaSelecionada;
        private String senhaUsuario;
        private String cpfCliente;
        private String codigoProduto;
        private Produto produtoSelecionado;
       
        private PedidoService pedidoService;
        private ClienteService clienteService;
        private ProdutoService produtoService;
        private LojaService lojaService;

        @Inject
        public InformarPedidoBean(PedidoService pedidoService, ClienteService clienteService, ProdutoService produtoService,
                        LojaService lojaService) {
                this.pedidoService = pedidoService;
                this.clienteService = clienteService;
                this.produtoService = produtoService;
                this.lojaService = lojaService;
        }
       
        @Override
        public void preCarregamento() {
                limparEntidade();
        }
       
        @Override
        public void limparEntidade() {
                entidade = new Pedido();
                entidade.setLoja(new Loja(ConstantesSEC.SEQUENCIAL_MATRIZ_ESTOQUE_9));
                setSenhaUsuario("");
        }

        @Override
        public GenericService<Pedido> getService() {
                return pedidoService;
        }
       
        @Override
        public Pedido getEntidade() {
                return entidade;
        }

        @Override
        public Pedido getId() {
                return getEntidade();
        }
       
        public Loja getLojaSelecionada() {
                if (VerificadorUtil.estaNulo(lojaSelecionada)) {
                        Loja loja = new Loja();
                        loja.setSequencial(new Long(getParametro("sequencialLoja").toString()));
                        lojaSelecionada = lojaService.consultarPorId(loja);
                }
                return lojaSelecionada;
        }
        public void setLojaSelecionada(Loja lojaSelecionada) {
                this.lojaSelecionada = lojaSelecionada;
        }
       
        public String getSenhaUsuario() {
                return senhaUsuario;
        }
        public void setSenhaUsuario(String senhaUsuario) {
                this.senhaUsuario = senhaUsuario;
        }
       
        public String getCpfCliente() {
                return VerificadorUtil.naoEstaNulo(cpfCliente)? cpfCliente.replace(".", "").replace("-", "") : cpfCliente;
        }
        public void setCpfCliente(String cpfCliente) {
                this.cpfCliente = cpfCliente;
        }
       
        public String getCodigoProduto() {
                return codigoProduto;
        }
        public void setCodigoProduto(String codigoProduto) {
                this.codigoProduto = codigoProduto;
        }
       
        public Produto getProdutoSelecionado() {
                return produtoSelecionado;
        }
        public void setProdutoSelecionado(Produto produtoSelecionado) {
                this.produtoSelecionado = produtoSelecionado;
        }
       
        /***************************************************************/
       
        @Override
        public void cadastrar() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                pedidoService.adicionarPedido(getEntidade(), senhaUsuario);
                                limparEntidade();
                                LancadorMensagem.lancarSucesso("PEDIDO ADICIONADO COM SUCESSO!");
                        }
                });
        }
       
        public void atenderPedido(final Pedido pedido) {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                pedido.setDataUltimaAlteracaoSituacao(DataUtils.getDataAtual());
                                pedidoService.alterar(pedido);
                                LancadorMensagem.lancarSucesso("PEDIDO ATENDIDO COM SUCESSO!");
                        }
                });
        }
       
        public void excluirPedido(final Pedido pedido) {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                pedidoService.excluir(pedido);
                                LancadorMensagem.lancarSucesso("PEDIDO EXCLUÍDO COM SUCESSO!");
                        }
                });
        }
       
        public void selecionarCliente(final Cliente cliente) {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                cliente.setAtivo(true);
                                clienteService.alterar(cliente);
                                getEntidade().setCliente(clienteService.consultarClientePorCpfCnpj(cliente.getCpfCnpj()));
                                setCpfCliente(null);
                                adicionandoParametroArgsConfirmandoAcao(true);
                        }
                });
        }
       
        public void retirarCliente() {
                getEntidade().setCliente(null);
        }
       
        public void consultarProduto() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                Produto produtoSelecionado = produtoService.consultarProdutoPorCodigoOuCodigoEAN(getCodigoProduto());
                                if (VerificadorUtil.naoEstaNulo(produtoSelecionado)) {
                                        setProdutoSelecionado(produtoSelecionado);
                                }
                        }
                });
        }
       
        public void selecionarProduto() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
//                              getEntidade().setProduto(getProdutoSelecionado());
                                setCodigoProduto(null);
                                getEntidade().setModelo(null);
                                getEntidade().setGenero(null);
                                adicionandoParametroArgsConfirmandoAcao(true);
                        }
                });
        }
       
        public void retirarProduto() {
//              entidade.setProduto(null);
        }
       
        /***************************************************************/
       
        public void adicionarPedido(final Loja loja) {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                getEntidade().setLoja(loja);
                                pedidoService.adicionarPedido(getEntidade(), senhaUsuario);
                                limparEntidade();
                                LancadorMensagem.lancarSucesso("PEDIDO ADICIONADO COM SUCESSO!");
                        }
                });
        }
       
}