package br.com.ec.controller.managedbean;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
import javax.inject.Named;
import org.springframework.context.annotation.Scope;
import br.com.ec.core.exception.NegocioException;
import br.com.ec.core.util.DataUtils;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.domain.dto.ParametrosConsultaVendasVivoDTO;
import br.com.ec.domain.model.VendaVivo;
import br.com.ec.domain.model.tipos.TipoConsultaVendasVivo;
import br.com.ec.domain.model.tipos.TipoStatusDigitalizacao;
import br.com.ec.domain.service.vendavivo.VendaVivoService;
import br.com.ec.domain.shared.Ordenador;
import br.com.ec.domain.shared.OrdenadorImpl;
import br.com.ec.web.exception.VerificadorLancamentoException;
import br.com.ec.web.exception.VerificadorLancamentoException.CommandBean;
import br.com.ec.web.message.LancadorMensagem;
@Named
@Scope
("view")
public class AcompanhamentoVivoBean
implements Serializable {
private static final long serialVersionUID = 1L
;
private ParametrosConsultaVendasVivoDTO parametrosConsultaVendasVivo
;
private List<VendaVivo
> listaVendas
;
private VendaVivo vendaVivoSelecionada
;
private Integer quantidadeSemDigitalizacao =
0;
private Integer quantidadeNaoVerificados =
0;
private Integer quantidadeEmContestacao =
0;
private Integer quantidadeComPendencias =
0;
private Integer quantidadeCancelada =
0;
private Integer quantidadeConfirmada =
0;
private Integer quantidadeSemVivoGo =
0;
private VendaVivoService vendaVivoService
;
private Ordenador ordenador
;
@Inject
public AcompanhamentoVivoBean
(VendaVivoService vendaVivoService
) {
this.
vendaVivoService = vendaVivoService
;
this.
ordenador =
new OrdenadorImpl
();
}
@PostConstruct
public void preCarregamento
() {
ParametrosConsultaVendasVivoDTO parametros =
new ParametrosConsultaVendasVivoDTO
();
parametros.
setEntidade(new VendaVivo
());
parametros.
setTipoConsultaVendasVivo(TipoConsultaVendasVivo.
COM_PENDENCIAS.
getValor());
setParametrosConsultaVendasVivo
(parametros
);
consultarVendas
();
}
public TipoConsultaVendasVivo
[] getTiposConsultaVendasVivo
() {
return TipoConsultaVendasVivo.
values();
}
public TipoStatusDigitalizacao
[] getTiposStatusDigitalizacao
() {
return TipoStatusDigitalizacao.
values();
}
public ParametrosConsultaVendasVivoDTO getParametrosConsultaVendasVivo
() {
return parametrosConsultaVendasVivo
;
}
public void setParametrosConsultaVendasVivo
(ParametrosConsultaVendasVivoDTO parametrosConsultaVendasVivo
) {
this.
parametrosConsultaVendasVivo = parametrosConsultaVendasVivo
;
}
public List<VendaVivo
> getListaVendas
() {
return listaVendas
;
}
public void setListaVendas
(List<VendaVivo
> listaVendas
) {
this.
listaVendas = listaVendas
;
}
public VendaVivo getVendaVivoSelecionada
() {
return vendaVivoSelecionada
;
}
public void setVendaVivoSelecionada
(VendaVivo vendaVivoSelecionada
) {
this.
vendaVivoSelecionada = vendaVivoSelecionada
;
}
public Integer getQuantidadeSemDigitalizacao
() {
return quantidadeSemDigitalizacao
;
}
public void setQuantidadeSemDigitalizacao
(Integer quantidadeSemDigitalizacao
) {
this.
quantidadeSemDigitalizacao = quantidadeSemDigitalizacao
;
}
public Integer getQuantidadeNaoVerificados
() {
return quantidadeNaoVerificados
;
}
public void setQuantidadeNaoVerificados
(Integer quantidadeNaoVerificados
) {
this.
quantidadeNaoVerificados = quantidadeNaoVerificados
;
}
public Integer getQuantidadeEmContestacao
() {
return quantidadeEmContestacao
;
}
public void setQuantidadeEmContestacao
(Integer quantidadeEmContestacao
) {
this.
quantidadeEmContestacao = quantidadeEmContestacao
;
}
public Integer getQuantidadeComPendencias
() {
return quantidadeComPendencias
;
}
public void setQuantidadeComPendencias
(Integer quantidadeComPendencias
) {
this.
quantidadeComPendencias = quantidadeComPendencias
;
}
public Integer getQuantidadeCancelada
() {
return quantidadeCancelada
;
}
public void setQuantidadeCancelada
(Integer quantidadeCancelada
) {
this.
quantidadeCancelada = quantidadeCancelada
;
}
public Integer getQuantidadeConfirmada
() {
return quantidadeConfirmada
;
}
public void setQuantidadeConfirmada
(Integer quantidadeConfirmada
) {
this.
quantidadeConfirmada = quantidadeConfirmada
;
}
public Integer getQuantidadeSemVivoGo
() {
return quantidadeSemVivoGo
;
}
public void setQuantidadeSemVivoGo
(Integer quantidadeSemVivoGo
) {
this.
quantidadeSemVivoGo = quantidadeSemVivoGo
;
}
/***************************************************************/
public void consultarVendas
() {
setListaVendas
(new ArrayList<VendaVivo
>(ordenador.
ordenar(vendaVivoService.
consultarVendaPorParametros(getParametrosConsultaVendasVivo
()))));
atualizarResumo
(getListaVendas
());
}
public void atualizarResumo
(List<VendaVivo
> vendas
) {
Integer quantidadeSemDigitalizacao =
0;
Integer quantidadeNaoVerificados =
0;
Integer quantidadeEmContestacao =
0;
Integer quantidadeComPendencias =
0;
Integer quantidadeCancelada =
0;
Integer quantidadeConfirmada =
0;
Integer quantidadeSemVivoGo =
0;
for (VendaVivo vendaVivo : vendas
) {
if (VerificadorUtil.
estaNulo(vendaVivo.
getDataDigitalizacao())) {
quantidadeSemDigitalizacao++
;
}
if (vendaVivo.
naoVerificado()) {
quantidadeNaoVerificados++
;
}
if (vendaVivo.
emContestacao()) {
quantidadeEmContestacao++
;
}
if (vendaVivo.
verificadoComPendencia()) {
quantidadeComPendencias++
;
}
if (vendaVivo.
cancelado()) {
quantidadeCancelada++
;
}
if (vendaVivo.
confirmadoSemGED() || vendaVivo.
statusConfirmado()) {
quantidadeConfirmada++
;
}
if (!vendaVivo.
getIndicadorCadastradoVivoGo()) {
quantidadeSemVivoGo++
;
}
}
setQuantidadeSemDigitalizacao
(quantidadeSemDigitalizacao
);
setQuantidadeNaoVerificados
(quantidadeNaoVerificados
);
setQuantidadeEmContestacao
(quantidadeEmContestacao
);
setQuantidadeComPendencias
(quantidadeComPendencias
);
setQuantidadeCancelada
(quantidadeCancelada
);
setQuantidadeConfirmada
(quantidadeConfirmada
);
setQuantidadeSemVivoGo
(quantidadeSemVivoGo
);
}
public void atualizarStatus
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
if (VerificadorUtil.
estaNuloOuVazio(getVendaVivoSelecionada
().
getTipoStatusDigitalizacao())) {
throw new NegocioException
("INFORME O STATUS");
}
if (!getVendaVivoSelecionada
().
confirmadoSemGED() ||
!getVendaVivoSelecionada
().
cancelado()) {
if (VerificadorUtil.
estaNuloOuVazio(getVendaVivoSelecionada
().
getProtocoloGED())) {
throw new NegocioException
("INFORME O PROTOCOLO");
}
if (VerificadorUtil.
estaNuloOuVazio(getVendaVivoSelecionada
().
getDataDigitalizacao())) {
throw new NegocioException
("INFORME A DATA DE DIGITALIZAÇÃO");
}
}
getVendaVivoSelecionada
().
setDataStatus(DataUtils.
getDataAtual());
vendaVivoService.
alterar(getVendaVivoSelecionada
());
LancadorMensagem.
lancarSucesso("VENDA ATUALIZADA COM SUCESSO!");
}
});
}
}