package br.com.ec.controller.managedbean;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
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.Pedido;
import br.com.ec.domain.model.tipos.TipoSexo;
import br.com.ec.domain.service.cliente.ClienteService;
import br.com.ec.web.exception.VerificadorLancamentoException;
import br.com.ec.web.exception.VerificadorLancamentoException.CommandBean;
import br.com.ec.web.generic.AbstractBean;
@Named
@Scope
("view")
public class ClienteBean
extends AbstractBean
<Cliente
> implements Serializable {
private static final long serialVersionUID = 1L
;
private ClienteService clienteService
;
private Cliente clienteSelecionado
;
private String cpfCnpjCliente
;
private String contatoCliente
;
private List<Pedido
> pedidos
;
private Pedido pedidoSelecionado
;
private Boolean indicadorCpfCnpjInvalido
;
@Inject
public ClienteBean
(ClienteService clienteService
) {
this.
clienteService = clienteService
;
}
@
Override
public void preCarregamento
() {
setIndicadorCpfCnpjInvalido
(false);
entidade =
new Cliente
();
entidade.
setAtivo(true);
}
@
Override
public void limparEntidade
() {
setEntidade
(new Cliente
());
setPedidos
(new ArrayList<Pedido
>());
}
@
Override
public GenericService
<Cliente
> getService
() {
return clienteService
;
}
@
Override
public Cliente getEntidade
() {
return entidade
;
}
@
Override
public Cliente getId
() {
return getEntidade
();
}
@
Override
public void preDetalhar
(Cliente cliente
) {
super.
preDetalhar(clienteService.
detalharCliente(cliente
));
}
@
Override
public void preAlterar
(Cliente cliente
) {
super.
preAlterar(clienteService.
detalharCliente(cliente
));
}
public Cliente getClienteSelecionado
() {
return clienteSelecionado
;
}
public void setClienteSelecionado
(Cliente clienteSelecionado
) {
this.
clienteSelecionado = clienteSelecionado
;
}
public String getCpfCnpjCliente
() {
return VerificadorUtil.
naoEstaNulo(cpfCnpjCliente
)? cpfCnpjCliente.
replace(".",
"").
replace("-",
"").
replace("/",
"") : cpfCnpjCliente
;
}
public void setCpfCnpjCliente
(String cpfCnpjCliente
) {
this.
cpfCnpjCliente = cpfCnpjCliente
;
}
public String getContatoCliente
() {
return contatoCliente
;
}
public void setContatoCliente
(String contatoCliente
) {
this.
contatoCliente = contatoCliente
;
}
public List<Pedido
> getPedidos
() {
return pedidos
;
}
public void setPedidos
(List<Pedido
> pedidos
) {
this.
pedidos = pedidos
;
}
public Pedido getPedidoSelecionado
() {
return pedidoSelecionado
;
}
public void setPedidoSelecionado
(Pedido pedidoSelecionado
) {
this.
pedidoSelecionado = pedidoSelecionado
;
}
public Boolean getIndicadorCpfCnpjInvalido
() {
return indicadorCpfCnpjInvalido
;
}
public void setIndicadorCpfCnpjInvalido
(Boolean indicadorCpfCnpjInvalido
) {
this.
indicadorCpfCnpjInvalido = indicadorCpfCnpjInvalido
;
}
/***************************************************************/
public List<Cliente
> getConsultarTodas
() {
return clienteService.
consultarTodos(new Cliente
());
}
public TipoSexo
[] getTiposSexo
() {
return TipoSexo.
values();
}
public void verificarCpfCnpj
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
setClienteSelecionado
(null);
setIndicadorCpfCnpjInvalido
(false);
Cliente clienteConsulta =
null;
if (VerificadorUtil.
naoEstaNuloOuVazio(getCpfCnpjCliente
())) {
clienteConsulta =
new Cliente
();
clienteConsulta.
setCpfCnpj(getCpfCnpjCliente
());
setIndicadorCpfCnpjInvalido
(!clienteConsulta.
cpfCnpjEhValido());
}
clienteConsulta = clienteService.
consultarClientePorCpfCnpjOuContato(getCpfCnpjCliente
(), getContatoCliente
());
if (VerificadorUtil.
estaNulo(clienteConsulta
)) {
clienteConsulta =
new Cliente
();
clienteConsulta.
setDataCadastro(DataUtils.
getDataAtual());
clienteConsulta.
setCpfCnpj(getCpfCnpjCliente
());
}
setClienteSelecionado
(clienteConsulta
);
}
});
}
public void limparCliente
() {
setClienteSelecionado
(null);
setCpfCnpjCliente
("");
}
/*
public void selecionarCliente(final Cliente cliente) {
new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
public void execute() {
cliente.setAtivo(true);
clienteService.alterar(cliente);
setClienteSelecionado(cliente);
setCpfCliente(null);
adicionandoParametroArgsConfirmandoAcao(true);
}
});
}
*/
}