package br.com.ec.controller.managedbean;
import java.io.Serializable;
import java.util.Date;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
import javax.inject.Named;
import org.springframework.context.annotation.Scope;
import br.com.ec.core.consulta.ParametrosConsulta;
import br.com.ec.core.generic.GenericService;
import br.com.ec.core.util.DataUtils;
import br.com.ec.domain.dto.DashboardComercialDTO;
import br.com.ec.domain.model.Loja;
import br.com.ec.domain.model.tipos.TipoPedido;
import br.com.ec.domain.model.tipos.TipoSituacaoPedido;
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.generic.AbstractBean;
@Named
@Scope
("view")
public class DashboardComercialBean
extends AbstractBean
<DashboardComercialDTO
> implements Serializable {
private static final long serialVersionUID = 1L
;
private PedidoService pedidoService
;
private ProdutoService produtoService
;
private DashboardComercialDTO acompanhamentoDia
;
@Inject
public DashboardComercialBean
(PedidoService pedidoService, ProdutoService produtoService
) {
this.
pedidoService = pedidoService
;
this.
produtoService = produtoService
;
}
@PostConstruct
private void iniciarDashboard
() {
Integer quantidePedidosNovos = pedidoService.
obterQuantidadePedidosPorSituacao(TipoPedido.
RESERVA.
getValor(), TipoSituacaoPedido.
NOVO.
getValor());
Integer quantidePedidosPendente = pedidoService.
obterQuantidadePedidosPorSituacao(TipoPedido.
RESERVA.
getValor(), TipoSituacaoPedido.
PENDENTE.
getValor());
Integer quantidePedidosPendenteCompras = pedidoService.
obterQuantidadePedidosPorSituacao(TipoPedido.
RESERVA.
getValor(), TipoSituacaoPedido.
PENDENTE_ANALISE_COMPRAS.
getValor());
Integer quantidePedidosAguardandoRetornoCliente = pedidoService.
obterQuantidadePedidosPorSituacao(null, TipoSituacaoPedido.
AGUARDANDO_RETORNO_CLIENTE.
getValor());
Integer quantidePedidosAguardandoCompras = pedidoService.
obterQuantidadePedidosPorSituacao(TipoPedido.
RESERVA.
getValor(), TipoSituacaoPedido.
PEDIDO_EM_COMPRAS.
getValor());
Integer quantidePedidosProdutoEmTransferencia = pedidoService.
obterQuantidadePedidosPorSituacao(TipoPedido.
RESERVA.
getValor(), TipoSituacaoPedido.
PEDIDO_EM_TRANSFERENCIA.
getValor());
Integer quantidePedidosAguardandoFinalizacaoCliente = pedidoService.
obterQuantidadePedidosPorSituacao(TipoPedido.
RESERVA.
getValor(), TipoSituacaoPedido.
AGUARDANDO_FINALIZACAO_CLIENTE.
getValor());
Integer quantidePedidosEntrarEmContato = pedidoService.
obterQuantidadePedidosPorSituacao(null, TipoSituacaoPedido.
ENTRAR_EM_CONTATO.
getValor());
Date trintaDiasAntes = DataUtils.
acrescentarDias(DataUtils.
getDataAtual(), -
30);
Integer quantidePedidosFinalizadoTrintaDias = pedidoService.
obterQuantidadePedidosPorSituacaoEePeriodo(TipoPedido.
RESERVA.
getValor(), TipoSituacaoPedido.
FINALIZADO.
getValor(), trintaDiasAntes, DataUtils.
getDataAtual());
Integer quantidePedidosFinalizadoComVendasTrintaDias = pedidoService.
obterQuantidadePedidosPorSituacaoEePeriodo(TipoPedido.
RESERVA.
getValor(), TipoSituacaoPedido.
FINALIZADO_COM_VENDAS.
getValor(), trintaDiasAntes, DataUtils.
getDataAtual());
Date seteDiasAntes = DataUtils.
acrescentarDias(DataUtils.
getDataAtual(), -
7);
Integer pedidosFinalizadosSeteDias = pedidoService.
obterQuantidadePedidosPorSituacaoEePeriodo(TipoPedido.
RESERVA.
getValor(), TipoSituacaoPedido.
FINALIZADO.
getValor(), seteDiasAntes, DataUtils.
getDataAtual());
Integer pedidosFinalizadosComVendasSeteDias = pedidoService.
obterQuantidadePedidosPorSituacaoEePeriodo(TipoPedido.
RESERVA.
getValor(), TipoSituacaoPedido.
FINALIZADO_COM_VENDAS.
getValor(), seteDiasAntes, DataUtils.
getDataAtual());
//INDICADORES
setAcompanhamentoDia
(new DashboardComercialDTO
());
getAcompanhamentoDia
().
setQuantidadePedidosNovos(quantidePedidosNovos
);
getAcompanhamentoDia
().
setQuantidadePedidosEntrarEmContato(quantidePedidosEntrarEmContato
);
getAcompanhamentoDia
().
setQuantidadePedidosEmAndamento(quantidePedidosPendenteCompras + quantidePedidosAguardandoCompras + quantidePedidosProdutoEmTransferencia + quantidePedidosAguardandoFinalizacaoCliente
);
getAcompanhamentoDia
().
setQuantidadePedidosPendentes(quantidePedidosPendente
);
getAcompanhamentoDia
().
setQuantidadePedidosAguardandoRetornoCliente(quantidePedidosAguardandoRetornoCliente
);
getAcompanhamentoDia
().
setQuantidadePedidosFinalizadosSemVendas(quantidePedidosFinalizadoTrintaDias
);
getAcompanhamentoDia
().
setQuantidadePedidosFinalizadosComVendas(quantidePedidosFinalizadoComVendasTrintaDias
);
getAcompanhamentoDia
().
setQuantidadePedidosAtendidosUltimosSeteDias(pedidosFinalizadosSeteDias + pedidosFinalizadosComVendasSeteDias
);
getAcompanhamentoDia
().
setQuantidadeRetirarDoSite(produtoService.
quantidadeProdutosParaRetirarDoOnlineMatriz());
getAcompanhamentoDia
().
setQuantidadeRetirarDoShoplog(produtoService.
quantidadeProdutosParaRetirarDoOnlineShoplog());
getAcompanhamentoDia
().
setQuantidadeAdicionadosSiteDiario(produtoService.
quantidadeProdutosAdicionadosSite(DataUtils.
getDataAtual(), DataUtils.
getDataAtual()));
getAcompanhamentoDia
().
setQuantidadeAdicionadosSiteSemanal(produtoService.
quantidadeProdutosAdicionadosSite(seteDiasAntes, DataUtils.
getDataAtual()));
getAcompanhamentoDia
().
setQuantidadeAdicionadosSiteMensal(produtoService.
quantidadeProdutosAdicionadosSite(DataUtils.
getPrimeiroDiaDoMesAtual(), DataUtils.
getUltimoDiaDoMesAtual()));
getAcompanhamentoDia
().
setQuantidadeProdutosOnline(produtoService.
quantidadeProdutosOnline());
getAcompanhamentoDia
().
setQuantidadeProdutosFavoritosOffline(produtoService.
quantidadeProdutosFavoritosOffline(new Loja
(ConstantesSEC.
SEQUENCIAL_MATRIZ_ESTOQUE_9)));
// ALERTAS
Date tresDiasAntes = DataUtils.
acrescentarDias(DataUtils.
getDataAtual(), -
3);
Integer pedidosAlertasNovosComTresDiasPassados = pedidoService.
obterQuantidadePedidosPorSituacaoEePeriodo(TipoPedido.
RESERVA.
getValor(), TipoSituacaoPedido.
NOVO.
getValor(),
null, tresDiasAntes
);
Integer pedidosAlertasEntrarEmContatoComTresDiasPassados = pedidoService.
obterQuantidadePedidosPorSituacaoEePeriodo(null, TipoSituacaoPedido.
ENTRAR_EM_CONTATO.
getValor(),
null, tresDiasAntes
);
Integer pedidosAlertasPendentesComSeteDiasPassados = pedidoService.
obterQuantidadePedidosPorSituacaoEePeriodo(TipoPedido.
RESERVA.
getValor(), TipoSituacaoPedido.
PENDENTE.
getValor(),
null, seteDiasAntes
);
Integer pedidosAlertasEmTransferenciaComSeteDiasPassados = pedidoService.
obterQuantidadePedidosPorSituacaoEePeriodo(TipoPedido.
RESERVA.
getValor(), TipoSituacaoPedido.
PEDIDO_EM_TRANSFERENCIA.
getValor(),
null, seteDiasAntes
);
Integer pedidosAlertasAguardandoRetornoClienteComSeteDiasPassados = pedidoService.
obterQuantidadePedidosPorSituacaoEePeriodo(null, TipoSituacaoPedido.
AGUARDANDO_RETORNO_CLIENTE.
getValor(),
null, seteDiasAntes
);
Integer pedidosAlertasAguardandoFinalizacaoClienteComSeteDiasPassados = pedidoService.
obterQuantidadePedidosPorSituacaoEePeriodo(null, TipoSituacaoPedido.
AGUARDANDO_FINALIZACAO_CLIENTE.
getValor(),
null, seteDiasAntes
);
getAcompanhamentoDia
().
setQuantidadeAlertaPedidosNovos(pedidosAlertasNovosComTresDiasPassados
);
getAcompanhamentoDia
().
setQuantidadeAlertaPedidosEntrarEmContato(pedidosAlertasEntrarEmContatoComTresDiasPassados
);
getAcompanhamentoDia
().
setQuantidadeAlertaPedidosPendentes(pedidosAlertasPendentesComSeteDiasPassados
);
getAcompanhamentoDia
().
setQuantidadeAlertaPedidosEmTransferencia(pedidosAlertasEmTransferenciaComSeteDiasPassados
);
getAcompanhamentoDia
().
setQuantidadeAlertaPedidosAguardandoRetornoCliente(pedidosAlertasAguardandoRetornoClienteComSeteDiasPassados
);
getAcompanhamentoDia
().
setQuantidadeAlertaPedidosAguardandoFinalizacaoCliente(pedidosAlertasAguardandoFinalizacaoClienteComSeteDiasPassados
);
}
@
Override
public void preCarregamento
() {
entidade =
new DashboardComercialDTO
();
parametrosConsulta =
new ParametrosConsulta
<DashboardComercialDTO
>();
parametrosConsulta.
setEntidade(entidade
);
}
@
Override
public void limparEntidade
() {
DashboardComercialDTO consolidado =
new DashboardComercialDTO
();
setEntidade
(consolidado
);
}
@
Override
public GenericService
<DashboardComercialDTO
> getService
() {
return null;
}
@
Override
public DashboardComercialDTO getEntidade
() {
return entidade
;
}
@
Override
public DashboardComercialDTO getId
() {
return getEntidade
();
}
public DashboardComercialDTO getAcompanhamentoDia
() {
return acompanhamentoDia
;
}
public void setAcompanhamentoDia
(DashboardComercialDTO consolidadoDia
) {
this.
acompanhamentoDia = consolidadoDia
;
}
}