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.DashboardAssistenciaDTO;
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.web.generic.AbstractBean;
@Named
@Scope
("view")
public class DashboardAssistenciaBean
extends AbstractBean
<DashboardAssistenciaDTO
> implements Serializable {
private static final long serialVersionUID = 1L
;
private PedidoService pedidoService
;
private ProdutoService produtoService
;
private DashboardAssistenciaDTO acompanhamentoDia
;
@Inject
public DashboardAssistenciaBean
(PedidoService pedidoService, ProdutoService produtoService
) {
this.
pedidoService = pedidoService
;
this.
produtoService = produtoService
;
}
@PostConstruct
private void iniciarDashboard
() {
Integer quantidePedidosNovos = pedidoService.
obterQuantidadePedidosPorSituacao(TipoPedido.
ASSISTENCIA.
getValor(), TipoSituacaoPedido.
NOVO.
getValor());
Integer quantidePedidosPendenteAnalise = pedidoService.
obterQuantidadePedidosPorSituacao(TipoPedido.
ASSISTENCIA.
getValor(), TipoSituacaoPedido.
PENDENTE_ANALISE_ASSISTENCIA.
getValor());
Integer quantidePedidosPendente = pedidoService.
obterQuantidadePedidosPorSituacao(TipoPedido.
ASSISTENCIA.
getValor(), TipoSituacaoPedido.
PENDENTE.
getValor());
Integer quantidePedidosEmAssistencia = pedidoService.
obterQuantidadePedidosPorSituacao(TipoPedido.
ASSISTENCIA.
getValor(), TipoSituacaoPedido.
PEDIDO_EM_ASSISTENCIA.
getValor());
Integer quantidePedidosAguardandoFinalizacaoCliente = pedidoService.
obterQuantidadePedidosPorSituacao(TipoPedido.
ASSISTENCIA.
getValor(), TipoSituacaoPedido.
AGUARDANDO_FINALIZACAO_CLIENTE.
getValor());
Integer quantidePedidosEntrarEmContato = pedidoService.
obterQuantidadePedidosPorSituacao(TipoPedido.
ASSISTENCIA.
getValor(), TipoSituacaoPedido.
ENTRAR_EM_CONTATO.
getValor());
Date trintaDiasAntes = DataUtils.
acrescentarDias(DataUtils.
getDataAtual(), -
30);
Integer quantidePedidosFinalizadoTrintaDias = pedidoService.
obterQuantidadePedidosPorSituacaoEePeriodo(TipoPedido.
ASSISTENCIA.
getValor(), TipoSituacaoPedido.
FINALIZADO.
getValor(), trintaDiasAntes, DataUtils.
getDataAtual());
Integer quantidePedidosFinalizadoComVendasTrintaDias = pedidoService.
obterQuantidadePedidosPorSituacaoEePeriodo(TipoPedido.
ASSISTENCIA.
getValor(), TipoSituacaoPedido.
FINALIZADO_COM_VENDAS.
getValor(), trintaDiasAntes, DataUtils.
getDataAtual());
Date seteDiasAntes = DataUtils.
acrescentarDias(DataUtils.
getDataAtual(), -
7);
Integer pedidosFinalizadosSeteDias = pedidoService.
obterQuantidadePedidosPorSituacaoEePeriodo(TipoPedido.
ASSISTENCIA.
getValor(), TipoSituacaoPedido.
FINALIZADO.
getValor(), seteDiasAntes, DataUtils.
getDataAtual());
Integer pedidosFinalizadosComVendasSeteDias = pedidoService.
obterQuantidadePedidosPorSituacaoEePeriodo(TipoPedido.
ASSISTENCIA.
getValor(), TipoSituacaoPedido.
FINALIZADO_COM_VENDAS.
getValor(), seteDiasAntes, DataUtils.
getDataAtual());
//INDICADORES
setAcompanhamentoDia
(new DashboardAssistenciaDTO
());
getAcompanhamentoDia
().
setQuantidadePedidosNovos(quantidePedidosNovos
);
getAcompanhamentoDia
().
setQuantidadePedidosEntrarEmContato(quantidePedidosEntrarEmContato
);
getAcompanhamentoDia
().
setQuantidadePedidosEmAssistencia(quantidePedidosEmAssistencia
);
getAcompanhamentoDia
().
setQuantidadePedidosAguardandoFinalizacaoCliente(quantidePedidosAguardandoFinalizacaoCliente
);
getAcompanhamentoDia
().
setQuantidadePedidosPendentes(quantidePedidosPendente
);
getAcompanhamentoDia
().
setQuantidadePedidosPendentesAnalise(quantidePedidosPendenteAnalise
);
getAcompanhamentoDia
().
setQuantidadePedidosFinalizadosSemVendas(quantidePedidosFinalizadoTrintaDias
);
getAcompanhamentoDia
().
setQuantidadePedidosFinalizadosComVendas(quantidePedidosFinalizadoComVendasTrintaDias
);
getAcompanhamentoDia
().
setQuantidadePedidosAtendidosUltimosSeteDias(pedidosFinalizadosSeteDias + pedidosFinalizadosComVendasSeteDias
);
getAcompanhamentoDia
().
setQuantidadeRetirarDoSite(produtoService.
quantidadeProdutosParaRetirarDoOnlineMatriz());
// ALERTAS
Date tresDiasAntes = DataUtils.
acrescentarDias(DataUtils.
getDataAtual(), -
3);
Integer pedidosAlertasNovosComTresDiasPassados = pedidoService.
obterQuantidadePedidosPorSituacaoEePeriodo(TipoPedido.
ASSISTENCIA.
getValor(), TipoSituacaoPedido.
NOVO.
getValor(),
null, tresDiasAntes
);
Integer pedidosAlertasEntrarEmContatoComTresDiasPassados = pedidoService.
obterQuantidadePedidosPorSituacaoEePeriodo(TipoPedido.
ASSISTENCIA.
getValor(), TipoSituacaoPedido.
ENTRAR_EM_CONTATO.
getValor(),
null, tresDiasAntes
);
Integer pedidosAlertasPendentesComSeteDiasPassados = pedidoService.
obterQuantidadePedidosPorSituacaoEePeriodo(TipoPedido.
ASSISTENCIA.
getValor(), TipoSituacaoPedido.
PENDENTE.
getValor(),
null, seteDiasAntes
);
Integer pedidosAlertasPendentesAnaliseComTresDiasPassados = pedidoService.
obterQuantidadePedidosPorSituacaoEePeriodo(TipoPedido.
ASSISTENCIA.
getValor(), TipoSituacaoPedido.
PENDENTE_ANALISE_ASSISTENCIA.
getValor(),
null, tresDiasAntes
);
Integer pedidosAlertasEmTransferenciaComSeteDiasPassados = pedidoService.
obterQuantidadePedidosPorSituacaoEePeriodo(TipoPedido.
ASSISTENCIA.
getValor(), TipoSituacaoPedido.
PEDIDO_EM_TRANSFERENCIA.
getValor(),
null, seteDiasAntes
);
Integer pedidosAlertasEmAssistenciaComSeteDiasPassados = pedidoService.
obterQuantidadePedidosPorSituacaoEePeriodo(TipoPedido.
ASSISTENCIA.
getValor(), TipoSituacaoPedido.
PEDIDO_EM_ASSISTENCIA.
getValor(),
null, seteDiasAntes
);
Integer pedidosAlertasAguardandoFinalizacaoClienteComSeteDiasPassados = pedidoService.
obterQuantidadePedidosPorSituacaoEePeriodo(TipoPedido.
ASSISTENCIA.
getValor(), TipoSituacaoPedido.
AGUARDANDO_FINALIZACAO_CLIENTE.
getValor(),
null, seteDiasAntes
);
getAcompanhamentoDia
().
setQuantidadeAlertaPedidosNovos(pedidosAlertasNovosComTresDiasPassados
);
getAcompanhamentoDia
().
setQuantidadeAlertaPedidosEntrarEmContato(pedidosAlertasEntrarEmContatoComTresDiasPassados
);
getAcompanhamentoDia
().
setQuantidadeAlertaPedidosPendentes(pedidosAlertasPendentesComSeteDiasPassados
);
getAcompanhamentoDia
().
setQuantidadeAlertaPedidosPendentesAnalise(pedidosAlertasPendentesAnaliseComTresDiasPassados
);
getAcompanhamentoDia
().
setQuantidadeAlertaPedidosEmTransferencia(pedidosAlertasEmTransferenciaComSeteDiasPassados
);
getAcompanhamentoDia
().
setQuantidadeAlertaPedidosEmAssistencia(pedidosAlertasEmAssistenciaComSeteDiasPassados
);
getAcompanhamentoDia
().
setQuantidadeAlertaPedidosAguardandoFinalizacaoCliente(pedidosAlertasAguardandoFinalizacaoClienteComSeteDiasPassados
);
}
@
Override
public void preCarregamento
() {
entidade =
new DashboardAssistenciaDTO
();
parametrosConsulta =
new ParametrosConsulta
<DashboardAssistenciaDTO
>();
parametrosConsulta.
setEntidade(entidade
);
}
@
Override
public void limparEntidade
() {
DashboardAssistenciaDTO consolidado =
new DashboardAssistenciaDTO
();
setEntidade
(consolidado
);
}
@
Override
public GenericService
<DashboardAssistenciaDTO
> getService
() {
return null;
}
@
Override
public DashboardAssistenciaDTO getEntidade
() {
return entidade
;
}
@
Override
public DashboardAssistenciaDTO getId
() {
return getEntidade
();
}
public DashboardAssistenciaDTO getAcompanhamentoDia
() {
return acompanhamentoDia
;
}
public void setAcompanhamentoDia
(DashboardAssistenciaDTO consolidadoDia
) {
this.
acompanhamentoDia = consolidadoDia
;
}
}