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!");
}
});
}
}