package br.com.ec.controller.managedbean;
import java.io.Serializable;
import java.util.Date;
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.dto.RankingControleTrafegoDTO;
import br.com.ec.domain.dto.RankingControleTrafegoGeralDTO;
import br.com.ec.domain.model.ControleTrafego;
import br.com.ec.domain.model.Loja;
import br.com.ec.domain.model.Usuario;
import br.com.ec.domain.model.Vendedor;
import br.com.ec.domain.model.tipos.TipoGenero;
import br.com.ec.domain.model.tipos.TipoMotivoAtendimento;
import br.com.ec.domain.model.tipos.TipoPeriodoConsulta;
import br.com.ec.domain.service.controletrafego.ControleTrafegoService;
import br.com.ec.domain.service.loja.LojaService;
import br.com.ec.domain.service.usuario.UsuarioService;
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 ControleTrafegoBean
extends AbstractBean
<ControleTrafego
> implements Serializable {
private static final long serialVersionUID = 1L
;
private String senhaUsuario
;
private String cpfCliente
;
private ControleTrafegoService controleTrafegoService
;
private UsuarioService usuarioService
;
private LojaService lojaService
;
private Integer quantidadeDias =
30;
private Vendedor vendedorSelecionado
;
private RankingControleTrafegoGeralDTO rankingControleTrafegoGeral
;
private List<ControleTrafego
> listaControleTrafego
;
private List<RankingControleTrafegoDTO
> rankingControleTrafegoUnissex
;
private List<RankingControleTrafegoDTO
> rankingControleTrafegoMasculinos
;
private List<RankingControleTrafegoDTO
> rankingControleTrafegoFemininos
;
@Inject
public ControleTrafegoBean
(ControleTrafegoService controleTrafegoService, UsuarioService usuarioService, LojaService lojaService
) {
this.
controleTrafegoService = controleTrafegoService
;
this.
usuarioService = usuarioService
;
this.
lojaService = lojaService
;
}
public Integer getQuantidadeDias
() {
return quantidadeDias
;
}
public void setQuantidadeDias
(Integer quantidadeDias
) {
this.
quantidadeDias = quantidadeDias
;
}
public Vendedor getVendedorSelecionado
() {
return vendedorSelecionado
;
}
public void setVendedorSelecionado
(Vendedor vendedorSelecionado
) {
this.
vendedorSelecionado = vendedorSelecionado
;
}
public RankingControleTrafegoGeralDTO getRankingControleTrafegoGeral
() {
return rankingControleTrafegoGeral
;
}
public void setRankingControleTrafegoGeral
(RankingControleTrafegoGeralDTO rankingControleTrafegoGeral
) {
this.
rankingControleTrafegoGeral = rankingControleTrafegoGeral
;
}
public List<ControleTrafego
> getListaControleTrafego
() {
return listaControleTrafego
;
}
public void setListaControleTrafego
(List<ControleTrafego
> listaControleTrafego
) {
this.
listaControleTrafego = listaControleTrafego
;
}
public List<RankingControleTrafegoDTO
> getRankingControleTrafegoUnissex
() {
return rankingControleTrafegoUnissex
;
}
public void setRankingControleTrafegoUnissex
(List<RankingControleTrafegoDTO
> rankingControleTrafegoUnissex
) {
this.
rankingControleTrafegoUnissex = rankingControleTrafegoUnissex
;
}
public List<RankingControleTrafegoDTO
> getRankingControleTrafegoMasculinos
() {
return rankingControleTrafegoMasculinos
;
}
public void setRankingControleTrafegoMasculinos
(List<RankingControleTrafegoDTO
> rankingControleTrafegoMasculinos
) {
this.
rankingControleTrafegoMasculinos = rankingControleTrafegoMasculinos
;
}
public List<RankingControleTrafegoDTO
> getRankingControleTrafegoFemininos
() {
return rankingControleTrafegoFemininos
;
}
public void setRankingControleTrafegoFemininos
(List<RankingControleTrafegoDTO
> rankingControleTrafegoFemininos
) {
this.
rankingControleTrafegoFemininos = rankingControleTrafegoFemininos
;
}
public TipoPeriodoConsulta
[] getTiposPeriodoConsulta
() {
return TipoPeriodoConsulta.
values();
}
@
Override
public void preCarregamento
() {
limparEntidade
();
}
public void preencherRankings
() throws CloneNotSupportedException {
ControleTrafego controleTrafego = getEntidade
().
clone();
if (VerificadorUtil.
naoEstaNulo(getVendedorSelecionado
())) {
Usuario usuario =
new Usuario
();
usuario.
setPessoa(getVendedorSelecionado
().
getPessoa());
controleTrafego.
setUsuario(usuario
);
}
Date dataInicial = DataUtils.
subtrairDias(DataUtils.
getDataAtual(), getQuantidadeDias
());
setRankingControleTrafegoGeral
(controleTrafegoService.
consultarRankingControleTrafegoGeral(dataInicial, DataUtils.
getDataAtual(), controleTrafego
));
getRankingControleTrafegoGeral
().
preencherDadosPie();
controleTrafego.
setGeneroProduto(null);
controleTrafego.
setTipoMotivo(null);
setListaControleTrafego
(controleTrafegoService.
consultarControleTrafego(dataInicial, DataUtils.
getDataAtual(), controleTrafego
));
controleTrafego.
setTipoMotivo(TipoMotivoAtendimento.
SEM_OPCOES.
getValor());
controleTrafego.
setGeneroProduto(TipoGenero.
UNISSEX.
getValor());
setRankingControleTrafegoUnissex
(controleTrafegoService.
consultarRankingControleTrafegoResumido(dataInicial, DataUtils.
getDataAtual(), controleTrafego
));
controleTrafego.
setGeneroProduto(TipoGenero.
MASCULINO.
getValor());
setRankingControleTrafegoMasculinos
(controleTrafegoService.
consultarRankingControleTrafegoResumido(dataInicial, DataUtils.
getDataAtual(), controleTrafego
));
controleTrafego.
setGeneroProduto(TipoGenero.
FEMININO.
getValor());
setRankingControleTrafegoFemininos
(controleTrafegoService.
consultarRankingControleTrafegoResumido(dataInicial, DataUtils.
getDataAtual(), controleTrafego
));
}
@
Override
public void limparEntidade
() {
entidade =
new ControleTrafego
();
if (VerificadorUtil.
naoEstaNulo(getParametro
("sequencialLoja"))) {
Loja loja =
new Loja
();
loja.
setSequencial(new Long(getParametro
("sequencialLoja").
toString()));
entidade.
setLoja(lojaService.
consultarPorId(loja
));
}
setSenhaUsuario
("");
}
@
Override
public GenericService
<ControleTrafego
> getService
() {
return controleTrafegoService
;
}
@
Override
public ControleTrafego getEntidade
() {
return entidade
;
}
@
Override
public ControleTrafego getId
() {
return getEntidade
();
}
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 TipoMotivoAtendimento
[] getTiposMotivoAtendimento
() {
return TipoMotivoAtendimento.
values();
}
/***************************************************************/
@
Override
public void cadastrar
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
Loja lojaSelecionada = getEntidade
().
getLoja();
controleTrafegoService.
adicionarAtendimento(getEntidade
(), senhaUsuario
);
limparEntidade
();
entidade.
setLoja(lojaSelecionada
);
LancadorMensagem.
lancarSucesso("ATENDIMENTO ADICIONADO COM SUCESSO!");
}
});
}
@
Override
public void alterar
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
/*
getEntidade().setDataUltimaAlteracaoSituacao(DataUtils.getDataAtual());
getEntidade().setUsuarioAtendimento(usuarioService.consultarUsuarioPorSenha(senhaUsuario));
if (VerificadorUtil.naoEstaNulo(getEntidade().getProduto())) {
getEntidade().setModelo(getEntidade().getProduto().getModelo());
getEntidade().setGenero(getEntidade().getProduto().getGenero());
}
alterar(getEntidade());
*/
}
});
}
}